Xpath для получения всех элементов после этого элемента перед любым другим элементом или концом элементов? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть такая категория

a[contains(@class,'category')])[*]

Я пытаюсь получить подкатегорию, но не могу получить вторую часть.

((a[@class='category'])[2]//following-sibling::a[@class='sub_category'][following-sibling::a[@class='category')]])[*]

Как я могу получить вторую часть?

<div class="categories">																													
<a class="category" href="#">A</a>
<a class="sub_category" href="#">B</a>
<a class="sub_category" href="#">BB</a>	
<a class="sub_category" href="#">BBB</a>	
<a class="category" href="#">AA</a>			
<a class="sub_category" href="#">B</a>	
<a class="sub_category" href="#">BB</a>	
<a class="sub_category" href="#">BBB</a>
<a class="sub_category" href="#">BBBB</a>
<a class="sub_category" href="#">ВBBBB</a>
<a class="sub_category" href="#">ВBBBBB</a>
<a class="sub_category" href="#">ВBBBBBB</a>
<a class="sub_category" href="#">ВBBBBBBB</a>	
</div>

1 Ответ

0 голосов
/ 30 сентября 2019

Это даст вам все a, где класс равен 'sub_category' после второй категории

//a[@class='category'][2]/following-sibling::a[@class='sub_category']

, также имейте в виду, что он будет включать все "sub_category" a, например,

<div class="categories">
<a class="category" href="#">A</a>
<a class="sub_category" href="#">B</a>
<a class="sub_category" href="#">BB</a>
<a class="sub_category" href="#">BBB</a>
<a class="category" href="#">AA</a>
<a class="sub_category" href="#">B</a>
<a class="sub_category" href="#">BB</a>
<a class="sub_category" href="#">BBB</a>
<a class="sub_category" href="#">BBBB</a>
<a class="sub_category" href="#">ВBBBB</a>
<a class="sub_category" href="#">ВBBBBB</a>
<a class="sub_category" href="#">ВBBBBBB</a>
<a class="sub_category" href="#">ВBBBBBBB</a>
<a class="category" href="#">AAA</a>
<a class="sub_category" href="#">B</a>
<a class="sub_category" href="#">BB</a>
<a class="sub_category" href="#">BBB</a>
</div>

Приведенный выше xpath также будет содержать буквы в категории AAA

Если вам нужно извлечь только выбранные буквы, вы можете сделать что-то вроде следующего:

//a[@class='category' and text()='AA']/following-sibling::a[@class='sub_category'][position()<8]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...