Я пытаюсь выбрать какой-то контент между двумя комментариями 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>
Если вас интересует первая пара комментариев, вы можете начать с поиска первого комментария:
//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"
Других решений пока нет …