Groovy, разобрать HTML с XmlSlurper, как получить HTML-код в узле? - PullRequest
1 голос
/ 27 декабря 2010

Я анализирую html-страницу, используя XmlSlurper и HtmlCleaner, у меня есть GPathResult с

def page = new XmlSlurper(false,false).parseText(xml)

, теперь я могу использовать GPath для доступа к различным узлам.

В html, который у меня естьтакой абзац:

<p>
 some_text1
 <br />
 some_text2
 <br />
 some_text3
 <br />

 ....
 some_textN


 <br />
</p>

проблема в том, что теперь я не знаю, как разобрать текст в абзаце, мне нужно разделить текст внутри абзаца, используя тег <br /> какразделитель и получить список, подобный

[some_text, some_text1, some_text2, .... ,some_textN]

Имеющий узел, подобный

def node = page.body.some_path.p[0]

, если я использую text (), я получаю весь текст в абзаце, но без <br />, поэтому яя не могу использовать метод split, и я не могу найти способ получить настоящий html внутри абзаца из узла.

Есть какой-то способ разобрать этот текст?

Спасибо запомощь.

1 Ответ

2 голосов
/ 28 декабря 2010

В прошлом у меня была эта проблема с GPath, и я тоже не мог найти хороший способ ее решить.

Я закончил поиском / заменой <br /> в этом случае, заменив его чем-то, что не является элементом XML. Назовите это REPLACEMENT_SEPARATOR.

Таким образом, вы можете вызвать node.text().split(REPLACEMENT_SEPARATOR) и получить свой массив.

...