我正在解析一些这样的XML:
<root> <some_gunk/> <dupe_node> ... stuff I want ... </dupe_node> <bits_and_pieces/> <other_gunk/> <dupe_node> ... stuff I don't want ... </dupe_node> <more_gunk/> </root>
“// dupe_node”的XPath将给我两个dupe_node的实例来播放。我只想穿过第一个。我可以用XPath这样做吗?
/descendant::dupe_node[1]
// dupe_node [1]通常是错误的,虽然它在这种特殊情况下产生相同的结果。 See docs:
The location path //para[1] does not mean the same as the location path /descendant::para[1]. The latter selects the first descendant para element; the former selects all descendant para elements that are the first para children of their parents.
给出以下XML:
<foo> <bar/> <foo> <bar/> </foo> </foo>
// bar [1]将产生两个节点,因为两个栏都是其各自父项的第一个子节点。
/ descendant :: bar [1]将只给出一个节点,它是文档中第一个条。