检查一个节点在jsoup中有明文吗?

Posted

技术标签:

【中文标题】检查一个节点在jsoup中有明文吗?【英文标题】:Check a node has plaintext in jsoup? 【发布时间】:2013-01-15 01:44:20 【问题描述】:

我知道 Element.hasText() 方法可以检查节点是否在 jsoup 上有文本但包含链接文本。我只是想检查它是否有纯文本?任何人都可以给我一些解决方案吗?非常感谢

【问题讨论】:

【参考方案1】:

您为此使用正则表达式,这是一个示例:

final String html = "<p><span>spantext</span></p>"; // p-tag with no own text, but a child which has one
Document doc = Jsoup.parse(html);

// Check if the 'p'-tag has own text
boolean hasText = doc.select("p").is("p:matchesOwn(^$)"); // --> true, p has no own text

如果元素有一些文本,这将返回false

final String html = "<p>owntext<span>spantext</span></p>";
Document doc = Jsoup.parse(html);

// Check if the 'p'-tag has own text
boolean hasText = doc.select("p").is("p:matchesOwn(^$)"); // --> false, p has some own text

另一种解决方案:

public static boolean hasOwnText(Element element)

    return !element.ownText().isEmpty();

使用上面的 html 和 doc:

boolean hasText = hasOwnText(doc.select("p").first())

【讨论】:

如果这解决了你的问题,请accept这个答案。

以上是关于检查一个节点在jsoup中有明文吗?的主要内容,如果未能解决你的问题,请参考以下文章

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

遍历DOM树时Jsoup节点哈希码冲突

jsoup截取HTML页面中的节点

仅使用 Jsoup 从子节点中选择?

根节点是内部节点吗?

使用 XSLT 检查节点是不是存在