什么是XPath表达式才能找到第一个出现的?

时间:2013-01-12 15:52:39

标签: xml xpath expression

我使用了此Xpath表达式"//span[@class='Big']",并获得了该页面中<span>标记和class='Big'下的所有元素。

我的问题是如果我只希望页面上第一次出现,而不是所有出现,那么正确的Xpath表达式是什么?

谢谢, 纳林

2 个答案:

答案 0 :(得分:108)

正确答案(注意括号)

(//span[@class='Big'])[1]

以下表达式在一般情况下是错误的:

//span[@class='Big'][1]

因为它选择文档中的每个span元素,满足第一个谓词中的条件,并且是其父元素的第一个这样的子元素 - 可能有很多这样的元素XML文档中的元素将被选中。

有关详细说明,请参阅:https://stackoverflow.com/a/5818966/36305

答案 1 :(得分:4)

如果您希望class属性 等于 (//span[@class="Big"])[1] ,那么Dimitre Novatchev的回答是正确的(没有任何其他附加到元素的类):

document.querySelectorAll('span[class="Big"]')[0]

...类似于以下JavaScript表达式:

Big

另一方面,如果您希望(//span[contains(concat(" ", normalize-space(@class), " "), " Big ")])[1] class属性中任意数量的 类之一(而不是唯一的类),您可以使用以下表达式:

document.querySelectorAll('span.Big')[0]

...类似于以下JavaScript表达式:

{{1}}