Xpath 用其祖先节点/标记包装XML元素
我无法以编程方式浏览XML文档,出于我在最后描述的原因,我需要一个单行XPath解决方案 我正在使用一个类似于下面的XML模式。(这是我必须按原样使用的东西。)Xpath 用其祖先节点/标记包装XML元素,xpath,parent-child,ancestor,Xpath,Parent Child,Ancestor,我无法以编程方式浏览XML文档,出于我在最后描述的原因,我需要一个单行XPath解决方案 我正在使用一个类似于下面的XML模式。(这是我必须按原样使用的东西。) 乔 12 迈克 25 简 20 假设我已经在“Joe”节点(即子1中的Name元素),我需要定义一个XPath查询,该查询将“包装”该节点,如下所示: <Root> <!-- Child 1 --> <Child> <Name>Joe</Name>
乔
12
迈克
25
简
20
假设我已经在“Joe”节点(即子1中的Name元素),我需要定义一个XPath查询,该查询将“包装”该节点,如下所示:
<Root>
<!-- Child 1 -->
<Child>
<Name>Joe</Name>
<Age>12</Age>
</Child>
</Root>
乔
12
我尝试过祖先、字符串连接、concat等的各种组合,但似乎找不到正确“包装”元素的解决方案。(例如,我使用祖先的方式是返回所有子节点,这不是我所需要的。)
其他一些考虑:
用XSLT指定这样的转换非常简单和自然。正如
xpath
的wiki标记所述(也取自规范):xpath的主要目的是处理XML文档的一部分,而不是序列化新文档,与XQuery和XSLT相反。好问题,+1。请参阅我的答案,了解为什么不能单独使用XPath来实现这一点。谢谢,Alejandro。您的回答和Dimitre帮助我意识到我们需要一种不同的方法来解决这个问题。正如xpath
的wiki标记所述(也取自规范):xpath的主要目的是处理XML文档的一部分,它不会序列化新文档,与XQuery和XSLT相反。好问题,+1。请参阅我的答案,了解为什么不能单独使用XPath来实现这一点。谢谢,Alejandro。你的回答和Dimitre的帮助我意识到我们需要一种不同的方法来解决这个问题。谢谢,Dimitre。我发现在这种情况下我们不能使用XPath解决方案。我应该说“在这种情况下不能使用XPath唯一的解决方案。”再次感谢。谢谢,Dimitre。我发现在这种情况下我们不能使用XPath解决方案。我应该说“在这种情况下不能使用仅XPath的解决方案。”再次感谢。
<Root>
<!-- Child 1 -->
<Child>
<Name>Joe</Name>
<Age>12</Age>
</Child>
</Root>