Xpath选择第n个节点

Jan*_*nis 7 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>
Run Code Online (Sandbox Code Playgroud)

有没有办法选择类是"foo"的第n个div?

我会选择所有的泡沫 //div[@class="yay"/div[@class="foo"]

如果我想选择foo#3我该怎么做?就像是:

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

Dim*_*hev 24

这是XPath中最常见的FAQ之一.

用途:

(//div[@class="yay"]/div[@class="foo"])[3]
Run Code Online (Sandbox Code Playgroud)

说明:

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

从而

//div[@class="yay"]/div[@class="foo"][3]
Run Code Online (Sandbox Code Playgroud)

意思是:

选择divclass属性具有该值的每个属性,"foo"并且(该div)是div其父级的第三个子级.

如果有多个父div元素具有三个或更多此类子元素,则会选择所有第三个子元素.

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