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

M.M*_*M.M 17 java html-parsing jsoup

我有这样一个元素:

<td> TextA <br/> TextB </td>
Run Code Online (Sandbox Code Playgroud)

如何单独提取TextA和TextB?

Bal*_*usC 25

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

例如

Element td = getItSomehow();

for (Node child : td.childNodes()) {
    if (child instanceof TextNode) {
        System.out.println(((TextNode) child).text());
    }
}
Run Code Online (Sandbox Code Playgroud)

结果

 TextA 
 TextB 

我认为,如果Jsoup提供了一个Element#textNodes()或者什么来获取子文本节点就像Element#children()获取子元素一样(这将会返回<br />示例中的元素).

  • 我已经为1.6.2实现了Element#textNodes(),感谢您的建议.https://github.com/jhy/jsoup/commit/7b9f17760049161b775fd23b15653961620e259d (16认同)
  • @JonathanHedley你是一个救生员!我不能为你的辛勤工作感谢你.您的代码和评论非常完美,并为我节省了数小时的Google和StackOverflow. (2认同)