ruby — XPath для выбора между двумя комментариями HTML не работает?

Я пытаюсь выбрать какой-то контент между двумя комментариями HTML, но у меня возникли проблемы с его получением (как показано наXPath для выбора между двумя комментариями HTML?«).
Кажется, есть проблема, когда новые комментарии, которые находятся на той же строке.

Мой HTML:

<html>
........
<!-- begin content -->
<div>some text</div>
<div>
<p>Some more elements</p>
</div>
<!-- end content --><!-- begin content -->
<div>more text</div>
<!-- end content -->
.......
</html>

Я использую:

doc.xpath("//node()[preceding-sibling::comment()[. = ' begin content ']]
[following-sibling::comment()[. = ' end content ']]")

Результат:

<div>some text</div>
<div>
<p>Some more elements</p>
</div>
<!-- end content --><!-- begin content -->
<div>more text</div>

Что я пытаюсь получить:

<div>some text</div>
<div>
<p>Some more elements</p>
</div>

0

Решение

Если вас интересует первая пара комментариев, вы можете начать с поиска первого комментария:

//comment()[.=' begin content ']/following::*[not(preceding::comment()[.=' end content '])]

т.е .:

//comment()[1][.=' begin content ']           <-- look for first suitable comment
/following::*                             <-- take all following nodes
[not(preceding::comment()[.=' end content '])] <-- satisfying condition there is no preceding "end comment"
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]