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

我有一个这样的元素:

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

如何分别提取 TextA 和 TextB?

【问题讨论】:

    标签: java html-parsing jsoup


    【解决方案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 和 StackOverflow。
    猜你喜欢
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    相关资源
    最近更新 更多