如何忽略xpath中的第一个元素

时间:2010-04-14 00:25:24

标签: xpath

如何忽略第一个元素并获取其余元素?

<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>

由于

2 个答案:

答案 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)。