我将举一个问题的例子。我的XML就像这样
<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>
我有xpath表达式,它返回所有“element2”节点。然后我想为“element2”类型的每个节点找到包含它的“child”类型的节点。问题是在这两个节点之间可以有1到n个不同的节点,所以我不能只使用“..”。是否有类似“//”的东西会查找而不是向下
我有一些xpath的基本知识,根据http://www.w3schools.com/xpath/xpath_syntax.asp“..”返回当前节点的父节点,问题是当前节点是“element2”,问题是xml是动态来自第三方库所以我可以像这样的xml
<child Name = "child1">
<node>
<element1>Value1</element1>
</node>
</child>
或者像这样
<child Name = "child1">
<node1>
<node2>
<node3>
<element1>Value1</element1>
<element2>Value2</element2>
</node3>
</node2>
</node1>
</child>
“element”和child之间可以有3个以上的节点,节点数从1到20之间变化。请给我一个例子,只有一个xpath查询,在两种情况下只使用“子”节点..“
最诚挚的问候,
约尔丹
答案 0 :(得分:4)
您正在寻找祖先xpath轴:
element2/ancestor::child
祖先轴返回包含context元素的所有元素,向上移动。
答案 1 :(得分:3)
那么您当前的上下文是element2
元素?使用parent
axis:
parent::child/@Name
这将获取当前元素的父级,名为child
,并获取其属性Name
。
如果您不在element2
的上下文中,并且想要找到child
个孩子的所有element2
元素,则需要使用此元素:
child[element2]
答案 2 :(得分:3)
使用..运算符。