如何使用Jsoup提取单独的文本节点?


问题内容

我有一个像这样的元素:

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

如何分别提取TextA和TextB?


问题答案:

几种方法。这实际上取决于文档本身以及给定的HTML标记是否一致。在此特定示例中,您可以获取td的子节点Element#childNodes(),然后分别测试每个节点是否为TextNode

例如

Element td = getItSomehow();

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

导致

 文字A 
 文字B

我认为,如果Jsoup提供了Element#textNodes()或东西来获取子文本节点,就像Element#children()获取子元素一样(<br />在您的示例中将返回该元素),那会很好。