Как остановиться на конкретном теге? - PullRequest
0 голосов
/ 18 апреля 2019

Как получить весь текст под тегом h1 к следующему тегу h1?

У меня есть имя класса, начинающего h1 tag

...
<h1 class="something">...</h1>
...
<h1 ...>...</h1>
...

Я пытался: //*[@class='something']//text()

Я хочу очистить текст от всех детей и братьев и сестер.Мне не нужен текст h1 тегов.Я не знаю, как перестать очищать следующий тег h1.

1 Ответ

3 голосов
/ 18 апреля 2019

С соответствующим примером:

<root>
  <h1 class="something">.1.</h1>
  .2.
  <p>.3.</p>
  .4.
  <h1 class="other">.5.</h1>
</root>

Это выражение XPath 1.0:

/root//text()[not(ancestor::h1)][preceding::h1[1][@class='something']]

Значение: "текстовые узлы потомков root элемента, имеющего первый предшествующий h1 элемент с @class атрибутом, равным 'something´ и не имеющим предка h1 element "

И он выбирает

.2.

.3.
.4.

Test in http://www.xpathtester.com/xpath/ecd4f379b13558572ffd62d0db3a3f98

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...