如何忽略第一个元素并获取其余元素?
<ul>
<li><a href="#">some link</a></li>
<li><a href="#">some link 2</a></li>
<li><a href="#">link i want to find</a></li>
</ul>
由于
答案 0 :(得分:87)
如果你只想忽略“first”元素:
//li[position()>1]
or
(//a)[position()>1]
如果你想要最后一个(就像你的例子似乎暗示的那样):
//li[last()]
or
(//a)[last()]
答案 1 :(得分:12)
您可以使用position()
跳过“第一个”,但根据您感兴趣的元素以及上下文的内容,您可能需要稍微改变一下XPATH。
例如,如果您想要解决所有li
元素并获取除第一个之外的所有元素,则可以使用:
//li[position()>1]
它将按预期工作,返回除第一个之外的所有li
元素。
但是,如果您想要解决所有a
元素,则需要稍微修改XPATH。在表达式//a[position()>1]
的上下文中,每个a
元素的position()
为1,last()
将评估为true。因此,它始终会返回a
,并且不会跳过第一个。
您需要在括号中包装选择a
的表达式,以便在节点集中对它们进行分组,然后在位置上应用谓词过滤器。
(//a)[position()>1]
或者,你也可以使用这样的表达式:
//a[preceding::a]
除了第一个元素之外,它将找到所有a
元素(因为第一个元素之前没有a
)。