Xml 仅查找第一次出现的XPath表达式是什么?

Xml 仅查找第一次出现的XPath表达式是什么?,xml,xpath,expression,Xml,Xpath,Expression,我使用了这个Xpath表达式“//span[@class='Big']”,并获得了该页面中标记和class='Big'下的所有元素 我的问题是,如果我只想要页面上的第一个出现,而不是所有出现,那么正确的Xpath表达式是什么 谢谢, Narin正确答案(注意括号): (//span[@class='Big'])[1] 以下表达式在一般情况下是错误的: //span[@class='Big'][1] 因为它选择文档中满足第一个谓词中条件的每个span元素,并且是其父级的第一个子元素,所以XML

我使用了这个Xpath表达式
“//span[@class='Big']”
,并获得了该页面中
标记和
class='Big'
下的所有元素

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

谢谢,
Narin正确答案(注意括号)

(//span[@class='Big'])[1]
以下表达式在一般情况下是错误的:

//span[@class='Big'][1]
因为它选择文档中满足第一个谓词中条件的每个
span
元素,并且是其父级的第一个子元素,所以XML文档中可能有许多这样的元素,所有这些元素都将被选中


有关更详细的解释,请参见:

如果您希望属性等于
(没有任何其他类附加到元素),则Dimitre Novatchev的回答是正确的:

。。。与以下JavaScript表达式类似:

document.querySelectorAll('span[class="Big"]')[0]
(//span[contains(concat(" ", normalize-space(@class), " "), " Big ")])[1]
document.querySelectorAll('span.Big')[0]

另一方面,如果您希望
Big
是属性中任意数量的类(而不是唯一的类)中的之一,则可以使用以下表达式:

document.querySelectorAll('span[class="Big"]')[0]
(//span[contains(concat(" ", normalize-space(@class), " "), " Big ")])[1]
document.querySelectorAll('span.Big')[0]
。。。与以下JavaScript表达式类似:

document.querySelectorAll('span[class="Big"]')[0]
(//span[contains(concat(" ", normalize-space(@class), " "), " Big ")])[1]
document.querySelectorAll('span.Big')[0]

此方法不适用于Appium//android.view.view[contains(@text,'Sapiens A Brief History of humany Paperback English')]与2个元素匹配,但是(//android.view.view[contains(@text,'Sapiens A Brief History of humany Paperback English'))[0]没有找到任何元素。实际上我犯了一个错误,它起作用了,我的索引值是错误的(索引从1开始,而不是0)谢谢,事实上,我需要第二种方法来解决我的情况。我感谢你指出其中的区别!