Xpath选择第n个节点

时间:2012-05-16 00:22:26

标签: xpath

我有这样的XML

<div class="yay">
 <div class="foo"></div> 
 <div class="foo"></div>
 <div class="bar"></div>
 <div class="foo"></div>
 <div class="bar"></div>
 <div class="foo"></div>
</div>

有没有办法选择n-nth div,其中class是&#34; foo&#34;?

我选择//div[@class="yay"/div[@class="foo"]

的所有foos

如果我想选择foo#3我该怎么做?类似的东西:

//div[@class="yay"/div[@class="foo"][3]

2 个答案:

答案 0 :(得分:24)

这是XPath中最常见的常见问题解答之一

使用

(//div[@class="yay"]/div[@class="foo"])[3]

<强>解释

XPath伪运算符//的优先级(优先级)低于[]运算符。

因此

//div[@class="yay"]/div[@class="foo"][3]

表示

选择div属性的值为class的每个"foo",其中div)是其中第三个div个子父

如果有多个父div个元素包含三个或更多此类子元素,则会选择所有的第三个子元素。

与许多表达式语言一样,覆盖内置优先级的方法是使用括号

答案 1 :(得分:0)

这对我有用,所以你是正确的,//div/div[@class="foo"][2]或者你想要选择'yay'下的第3个元素,看看它是否'foo'?