xpath - найти несколько последовательных вхождений элемента - PullRequest
1 голос
/ 12 апреля 2011

У меня есть узел xhtml, который мне нужно очистить, со следующим innerText:

<img style="width: 402px; height: 312px;" src="http://www.mydomain.com/test.jpg" align="left" border="0" height="312" hspace="5" vspace="5" width="402"> <br><font size="1" face="Arial"><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font face="Verdana">Image text goes here</font> </font>

Я не могу самостоятельно определить выражения xpath, которые возвращают / находят множественные вхождения элемента <br>. мне нужно делать рекурсию в узлах и проверять по последнему совпадению?

ОБНОВЛЕНИЕ: я использую HtmlAgilityPack для навигации по документу.

Заранее спасибо!

С уважением, byte_slave

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Не совсем уверен, что вы хотите сделать с этим.Я спросил, что вы хотите преобразовать в качестве комментария к вопросу ...

Угадайте, что вы, возможно, захотите сделать, хотя ...

Чтобы узнать общее количество <br/> элементов, выпросто используйте XPath count(//descendant-or-self::br)

Или, если вы хотите что-то сделать со всеми элементами <br/>, которые находятся рядом с другим <br/>, вы можете использовать XPath //descendant-or-self::br[following-sibling::br or preceding-sibling::br], чтобы вернуть только этот длинный список <br/> S

1 голос
/ 12 апреля 2011

XPath не будет работать, потому что это НЕ XHTML.Все теги br не закрыты.Черт, даже сам тег img является неполным ...

Вы должны очистить это с помощью обработки простого текста (регулярные выражения, вероятно) или HTML-дезинфицирующих средств.Посмотрите на

xmllint

и

HTML tidy

...