У меня есть следующий пример HTML:
<!-- lots of html -->
<h2>Foo bar</h2>
<p>lorem</p>
<p>ipsum</p>
<p>etc</p>
<h2>Bar baz</h2>
<p>dum dum dum</p>
<p>poopfiddles</p>
<!-- lots more html ... -->
Я пытаюсь извлечь все абзацы, следующие за заголовком «Foo bar», пока не дойду до заголовка «Bar baz» (текст заголовка «Bar baz» неизвестен, поэтому, к сожалению, я не могу использовать ответ, предоставленный bougyman ). Теперь я, конечно, могу использовать что-то вроде //h2[text()='Foo bar']/following::p
, но это, конечно, захватит все абзацы, следующие за этим заголовком. Таким образом, у меня есть возможность пройтись по набору узлов и поместить абзацы в массив до тех пор, пока текст не совпадет с текстом следующего следующего заголовка, но давайте будем честными, это никогда не бывает так круто, как возможность сделать это в XPath.
Есть ли способ сделать это, что мне не хватает?