Xml 仅查找第一次出现的XPath表达式是什么?
我使用了这个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
“//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)谢谢,事实上,我需要第二种方法来解决我的情况。我感谢你指出其中的区别!