Как проигнорировать первый элемент в 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>

Спасибо

45
задан priyank 14 April 2010 в 00:25
поделиться

2 ответа

если вы хотите игнорировать "первый" элемент только тогда:

//li[position()>1]
or
(//a)[position()>1] 

если вы хотите только последний (как кажется в вашем примере):

//li[last()]
or
(//a)[last()]
91
ответ дан 26 November 2019 в 21:05
поделиться

Вы можете использовать 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 , кроме первого (поскольку а предшествует первому).

12
ответ дан 26 November 2019 в 21:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: