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