我有几个具有某些特定属性的节点,我需要通过索引选择其中一个。例如,我需要选择第二个<div>
和'test'类 - //div[@class='test'][2]
不起作用。
有没有办法按索引选择具有某些属性的节点?怎么做?
答案 0 :(得分:54)
这是常见问题解答。
在XPath中,[]
运算符具有比//
伪运算符更高的优先级(绑定更强)。
因此,表达式为:
//div[@class='test'][2]
选择div
属性为“test”的所有class
元素以及谁(div
元素)是其父级的第二个div
子元素。这不是你想要的。
使用强>:
(//div[@class='test'])[2]
答案 1 :(得分:2)
我相信每个XML规范,属性不被视为有订单
Note that the order of attribute specifications in a start-tag or empty-element tag is not significant.
见here
我认为你最好重新分解你的结构,使得属性顺序没有描述任何东西。如果您可以提供更多详细信息,我们可能会提供建议。
编辑:重新阅读您的帖子,看起来您正在尝试查找节点顺序而不是属性顺序。允许节点顺序,您的语法看起来很好。你在做什么软件?