我有几个具有某些特定属性的节点,我需要通过索引选择其中的一个。例如,我需要选择'test'类的第二个<div>
- //div[@class='test'][2]
不起作用。XPath:如何通过索引选择具有某些属性的节点?
有没有办法通过索引选择具有某个属性的节点?怎么做?
我有几个具有某些特定属性的节点,我需要通过索引选择其中的一个。例如,我需要选择'test'类的第二个<div>
- //div[@class='test'][2]
不起作用。XPath:如何通过索引选择具有某些属性的节点?
有没有办法通过索引选择具有某个属性的节点?怎么做?
这是一个常见问题解答。
在XPath中,[]
运算符比伪运算符具有更高的优先级(绑定更强)。
正因为如此,表达式:
//div[@class='test'][2]
选择所有div
元件,其class
属性为“测试”和谁(该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 我认为你最好重新考虑你的结构,使属性顺序不会描述任何东西。如果您可以提供更多详情,我们可能会提供建议。
编辑:重新读你的文章,看起来像你试图找到节点顺序,而不是属性顺序。节点顺序是允许的,并且你的语法看起来不错。你在做什么软件?
这是我的错 - 解析器隐藏标签。我已经添加了适当的格式。 我使用PHP DOM扩展http://ua.php.net/manual/en/book.dom.php,它似乎这个扩展提供了XPath的弱实现 – HongKilDong 2011-04-28 12:47:24
你试过 '// div [@ class ='测试'] [位置()= 2]' – 2011-04-28 12:50:18