C# 使用xpath获取定义类型的节点父节点
我将举一个我遇到的问题的例子。我的XML是这样的C# 使用xpath获取定义类型的节点父节点,c#,xml,xpath,C#,Xml,Xpath,我将举一个我遇到的问题的例子。我的XML是这样的 <root> <child Name = "child1"> <node> <element1>Value1</element1> <element2>Value2</element2> </node> </child> <child Name = "child2"> <element1&g
<root>
<child Name = "child1">
<node>
<element1>Value1</element1>
<element2>Value2</element2>
</node>
</child>
<child Name = "child2">
<element1>Value1</element1>
<element2>Value2</element2>
<element3>Value3</element3>
</child>
</root>
<child Name = "child1">
<node1>
<node2>
<node3>
<element1>Value1</element1>
<element2>Value2</element2>
</node3>
</node2>
</node1>
</child>
价值1
价值2
价值1
价值2
价值3
我有一个返回所有“element2”节点的xpath表达式。然后我想为每个“element2”类型的节点查找包含它的“child”类型的节点。问题是这两个节点之间可能有1到n个不同的节点,所以我不能只使用“.”。是否有像“/”这样的东西会向上看而不是向下看我有一些xpath的基本知识,根据“.”返回当前节点父节点问题是当前节点是“element2”,问题是xml是动态的,来自第三方库,所以我可以使用这样的xml
<child Name = "child1">
<node>
<element1>Value1</element1>
</node>
</child>
价值1
还是像这样
<root>
<child Name = "child1">
<node>
<element1>Value1</element1>
<element2>Value2</element2>
</node>
</child>
<child Name = "child2">
<element1>Value1</element1>
<element2>Value2</element2>
<element3>Value3</element3>
</child>
</root>
<child Name = "child1">
<node1>
<node2>
<node3>
<element1>Value1</element1>
<element2>Value2</element2>
</node3>
</node2>
</node1>
</child>
价值1
价值2
“元素”和子节点之间可以有3个以上的节点,节点数量从1到20不等。请给出一个示例,说明在这两种情况下,仅使用“.”就可以通过一个xpath查询来获取“子”节点
致以最诚挚的问候,Iordan您正在寻找的是祖先xpath轴:
element2/ancestor::child
祖先轴向上返回包含上下文元素的所有元素。因此当前上下文是
element2
元素?使用父元素:
这将获取当前元素的父元素,名为child
,并获取其属性Name
如果您不在element2
的上下文中,并且希望查找包含element2
子元素的所有child
元素,则需要使用此元素:
child[element2]
使用..运算符。@IordanTanev:BTW,父项:*
的快捷方式是。
,因此。/@Name
也可以很好地工作。使用缩写词。
相当于使用父项:
轴。您不能使用的声明完全错误。
请验证您的状态nts提供了示例,这样可以显著减少使用错误和误导性陈述提出的问题的数量。学习一点XPath也不会有什么坏处。您好,这是写在我的问题中的。在“element2”和“child”之间,还有1到n个其他节点,所以我不知道多少次需要使用“.”来访问“child”“@Dimitre Novatchev我已经编辑了我的问题