How to ignore first element in xpath

后端 未结 2 1944
耶瑟儿~
耶瑟儿~ 2020-12-29 19:53

How can I ignore first element and get rest of the elements?

2条回答
  •  遥遥无期
    2020-12-29 20:23

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

提交回复
热议问题