Nar*_*rin 46 xml xpath expression
我使用了这个Xpath表达式,"//span[@class='Big']"并获得了该页面中<span>标记和下的所有元素class='Big'.
我的问题是,如果我只想在页面上第一次出现,而不是所有出现,那么正确的Xpath表达式是什么?
谢谢,娜琳
Dim*_*hev 122
正确的答案(注意括号):
(//span[@class='Big'])[1]
Run Code Online (Sandbox Code Playgroud)
以下表达式在一般情况下是错误的:
//span[@class='Big'][1]
Run Code Online (Sandbox Code Playgroud)
因为它选择span了文档中的每个元素,它满足第一个谓词中的条件,并且它是其父元素的第一个子元素 - XML文档中可以有许多这样的元素,并且所有这些元素都将被选中.
有关更详细的说明,请参阅:https://stackoverflow.com/a/5818966/36305
如果您期望class属性等于 Big(没有附加任何其他类的元素),那么Dimitre Novatchev的答案是正确的:
(//span[@class="Big"])[1]
Run Code Online (Sandbox Code Playgroud)
...类似于以下JavaScript表达式:
document.querySelectorAll('span[class="Big"]')[0]
Run Code Online (Sandbox Code Playgroud)
另一方面,如果希望Big成为该属性中任意数量的类之一class(而不是唯一的类),则可以使用以下表达式:
(//span[contains(concat(" ", normalize-space(@class), " "), " Big ")])[1]
Run Code Online (Sandbox Code Playgroud)
...类似于以下JavaScript表达式:
document.querySelectorAll('span.Big')[0]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55905 次 |
| 最近记录: |