java - 检查一个节点在 jsoup 中是否有明文?

标签 java html css dom jsoup

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

最佳答案

你可以为此使用正则表达式,这是一个例子:

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 和文档:

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

关于java - 检查一个节点在 jsoup 中是否有明文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14617618/

相关文章:

javascript - 使用slideToggle时,如何让所有其他div向后滑动?

html - 在中心对齐标签

html - 如何适应特定子元素的宽度?

java - Android 上的隐藏和阻止状态栏

java - 如何使用 XMLUnit 只比较文件的某些部分?

java - 根据下拉值隐藏或显示

jquery - 如何更改列表项的背景图像

javascript - 如何将代码存储在 prism 的 JavaScript 变量中

css bootstrap 推特居中跨度

java - 如何动态创建多个 Swing 对象并一次删除一个对象?