Как извлечь отдельные текстовые узлы с помощью Jsoup? - PullRequest
16 голосов
/ 23 августа 2011

У меня есть такой элемент:

<td> TextA <br/> TextB </td>

Как я могу извлечь TextA и TextB по отдельности?

1 Ответ

24 голосов
/ 23 августа 2011

Несколько способов.Это действительно зависит от самого документа и от того, соответствует ли данная разметка HTML или нет.В этом конкретном примере вы можете получить дочерние узлы td на Element#childNodes(), а затем протестировать каждый узел отдельно, если это TextNode или нет.

Например,

Element td = getItSomehow();

for (Node child : td.childNodes()) {
    if (child instanceof TextNode) {
        System.out.println(((TextNode) child).text());
    }
}

, что приводит к

 TextA 
 TextB 

Я думаю, было бы неплохо, если бы Jsoup предложил Element#textNodes() или что-то, чтобы получить дочерние текстовые узлы, такие как Element#children()делает, чтобы получить дочерние элементы (которые возвратили бы элемент <br /> в вашем примере).

...