Получить <p>между двумя <h2> (один из них без идентификатора) с Xpath - PullRequest
0 голосов
/ 28 марта 2019

Я только начал работать с HtmlAgilityPack в C #, и мне нужно использовать Xpath (я понятия не имею об этом). Мне нужно получить все p между двумя <h2>, я знаю текст в первом <h2>, но другой является динамическим, я не знаю, что содержит.

<div>
     <h2><span>Location</span></h2>
     <p>Hi</p>
     <p>It's ok.</p>
     <p>Bye</p>
     <h2><span>{Dynamic text}</span></h2>
     <p>I do not know.</p>
     <h2><span>Summary</span></h2>
     <p>The end.</p>
</div>

Как я могу взять все <p> между <h2> > span['Location'] и следующим <h2> (Опять же, я не знаю, что содержится).

Я проверял:

//p[preceding-sibling::h2[span='Location'] and following-sibling::h2]

//p[count(preceding-sibling::h2[span='Location'])=1]

Оба теста с одинаковым результатом: Все <p>.

спасибо!

1 Ответ

1 голос
/ 29 марта 2019

Это один из способов взглянуть на это: то, что находится между двумя метками, совпадает с пересечением между теми, которые следуют за первой меткой, и теми, которые предшествуют второй метке.Для пересечения в XPath 1.0 мы используем метод Кайса.В вашем случае

/div/h2[span='Location']/following-sibling::h2[1]/preceding-sibling::*[
   count(.|/div/h2[span='Location']/following-sibling::*)
   = count(/div/h2[span='Location']/following-sibling::*)
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...