How to ignore first element in xpath
How can I ignore first element and get rest of the elements?
<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>
Thanks
Solution 1:
if you want to ignore the "first" element only then:
//li[position()>1]
or
(//a)[position()>1]
if you want the last only (like your example seems to suggest):
//li[last()]
or
(//a)[last()]
Solution 2:
You can use position()
to skip over the "first" one, but depending on which element you are interested in and what the context is, you may need a slight variation on your XPATH.
For instance, if you wanted to address all of the li
elements and get all except the first, you could use:
//li[position()>1]
and it would work as expected, returning all of the li
elements except for the first.
However, if you wanted to address all of the a
elements you need to modify the XPATH slightly. In the context of the expression //a[position()>1]
each one of the a
elements will have a position()
of 1 and last()
will evaluate to true. So, it would always return every a
and would not skip over the first one.
You need to wrap the expression that selects the a
in parenthesis to group them in a node-set, then apply the predicate filter on position.
(//a)[position()>1]
Alternatively, you could also use an expression like this:
//a[preceding::a]
That will find all a
elements except the first one (since there is no a
preceding the first one).