java - JSoup 从不包含任何 html 节点的表 td 中提取文本

标签 java jsoup

我有一个这样的 html 字符串:

String html="<table><tbody>
<tr>
<td><p>ABC</p></td>
<td>DEF</td>
</tr>
<tr>
<td><p>GHI</p></td>
<td>MNO</td>
</tr>
</tbody>
</table>";

我只需要提取 td 标签内不再有子元素的文本。我当前的代码返回文本和 html 节点。

Elements elements = doc.select("tbody > tr");
for (Element e : elements) {
    System.out.println(e.select("td").html());
}

但我需要的输出是:

DEF
MNO

提前致谢。

最佳答案

试试这个 CSS 选择器:

tbody > tr > td:not(:has(*))

演示

http://try.jsoup.org/~K4qiK0SxQDeuhE9FvvmUDa3vKKI

描述

tbody  /* Select any tbody */
> tr   /* Select any tr directly under it */
> td   /* Select any td directly under it ... */
:not(:has(*)) /* ... not having any element */

* 运算符只匹配元素。文本节点不是元素。它只是一种节点。

示例代码

Elements elements = doc.select("tbody > tr > td:not(:has(*))");
for (Element e : elements) {
    System.out.println(e.select("td").html());
}

输出

<td>DEF</td>
<td>MNO</td>

关于java - JSoup 从不包含任何 html 节点的表 td 中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34896283/

相关文章:

java - 无法安装Weblogic服务器12C,jar文件甚至无法打开

Java:showInputDialog 中的自定义按钮

java - spring+JPA EntityManager注入(inject)service和dao

java - 天气网站jsoup java

java - JSOUP 不支持的字符集异常

java - 带有 userAgent 的 JSoup 防止重定向

java - 安卓初学者 : ListView with Images and CheckBoxes

java - Android pdf View 库中的错误

java - 对象未添加到列表中,列表返回空

java - 从sup标签中检索文本