Jsoup插入空TextNodes

时间:2015-05-07 17:47:04

标签: jsoup

如屏幕截图所示,jsoup在每个其他子节点之前/之后插入空TextNode。有没有办法把它关掉?或者我做错了什么?这些存在有什么原因吗?

Jsoup 1.8.2如果它有帮助。

Example

1 个答案:

答案 0 :(得分:1)

  

有没有办法将其关闭?

不,因为这是Jsoup HTML解析器的正常行为。

  

或者我做错了什么?

调用的方法可能是整个问题的根本原因。

  

是否有任何理由存在?

每次在HTML文档中找到文本时,它都会在最终的HTML对象树(TextNode)中显示为Document

如果HTML文档的作者在元素之前放置换行符,Jsoup将为此换行符创建一个TextNode。

  

(...)childnodes()。size()不再返回正确的数据

我认为问题的核心在于此。而不是调用Node#childnodes(),而是调用Element#children()方法。此方法将为您过滤掉空TextNode

或者,您可以使用以下代码段来获取数据:

Document doc = ...
Elements tds = doc.select("table tr > td");
if (tds.size() == 0) {
   // No td found ...
}

// ...

Jsoup 1.8.2