我使用了这个 Xpath 表达式"//span[@class='Big']"
,并获得了该页面中<span>
标记和class='Big'
.
我的问题是,如果我只想要页面上的第一次出现,而不是所有出现,那么正确的Xpath
表达方式是什么?
谢谢,纳林
我使用了这个 Xpath 表达式"//span[@class='Big']"
,并获得了该页面中<span>
标记和class='Big'
.
我的问题是,如果我只想要页面上的第一次出现,而不是所有出现,那么正确的Xpath
表达方式是什么?
谢谢,纳林
正确答案(注意括号):
(//span[@class='Big'])[1]
在一般情况下,以下表达式是错误的:
//span[@class='Big'][1]
因为它选择span
文档中的每个元素,满足第一个谓词中的条件,并且是它的父元素的第一个这样的子元素——在一个 XML 文档中可以有很多这样的元素,并且它们都会被选中。
如果您期望class
属性等于 Big
(没有任何其他类附加到元素),Dimitre Novatchev 的答案是正确的:
(//span[@class="Big"])[1]
...类似于以下 JavaScript 表达式:
document.querySelectorAll('span[class="Big"]')[0]
另一方面,如果您希望Big
成为属性中任意数量的类之一class
(而不是唯一的类),则可以使用以下表达式:
(//span[contains(concat(" ", normalize-space(@class), " "), " Big ")])[1]
...类似于以下 JavaScript 表达式:
document.querySelectorAll('span.Big')[0]