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

Posted

技术标签:

【中文标题】如何使用 Jsoup 提取单独的文本节点?【英文标题】:How to extract separate text nodes with Jsoup? 【发布时间】:2011-11-02 02:58:45 【问题描述】:

我有一个这样的元素:

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

如何分别提取 TextA 和 TextB?

【问题讨论】:

【参考方案1】:

几种方法。这实际上取决于文档本身以及给定的 html 标记是否一致。在这个特定示例中,您可以通过Element#childNodes() 获取td 的子节点,然后单独测试每个节点是否为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() 那样获取子元素的东西来获取子文本节点(在您的示例中将返回 &lt;br /&gt; 元素),那就太好了。

【讨论】:

我已经为 1.6.2 实现了 Element#textNodes(),感谢您的建议。 github.com/jhy/jsoup/commit/… @JonathanHedley 你是救生员!我对你的辛勤工作表示感谢。您的代码和 cmets 非常完美,为我节省了数小时的 Google 和 ***。

以上是关于如何使用 Jsoup 提取单独的文本节点?的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中提取网页文本内容? [关闭]

Jsoup - 提取文本

如何防止 Jsoup 转义 html?

如何使用jsoup取消注释html标签

Jsoup代码示例解析网页+提取文本

使用报表查看器,如何从两个单独的数据集中提取