我有这样的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"]
如果我想选择foo#3我该怎么做?类似的东西:
//div[@class="yay"/div[@class="foo"][3]
?
答案 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'?