java - 是否可以删除不需要的标签的文本节点

标签 java html jsoup

我测试了 Jsoup,我无法删除不需要的标签的文本节点。 Idk 如果我错误的方法。 方法是:

String pretty = Jsoup.clean("<img src=\"marco\">Capretta</img><i>Sono misterioso</i><p color=\"white\"><font size=\"5\">Ciao</p><p>some text</p><br/> <p>another text</p></font>" , "", Whitelist.basic().addTags("br", "p","i"), new Document.OutputSettings().prettyPrint(true));
System.out.println(pretty);

结果是:

Capretta
<i>Sono misterioso</i>
<p>Ciao</p>
<p>some text</p>
<br> 
<p>another text</p>

但我不想要 <img> 的文本节点(也适用于其他不需要的标签)...

所以结果更好:

<i>Sono misterioso</i>
<p>Ciao</p>
<p>some text</p>
<br> 
<p>another text</p>

我也可以有不同的 html...

附言问题是针对 Java 而不是 Javascript!!!

最佳答案

假设您的 HTML 足够简单。

您可以通过首先解析 HTML 然后检索body 标记的子级 来实现这一点

String pretty = Jsoup.clean("<img src=\"marco\">Capretta</img><i>Sono misterioso</i><p color=\"white\"><font size=\"5\">Ciao</p><p>some text</p><br/> <p>another text</p></font>" , "", Whitelist.basic().addTags("br", "p","i"), new Document.OutputSettings().prettyPrint(true));
pretty= Jsoup.parse(pretty).getElementsByTag("body").get(0).children().toString();
System.out.println(pretty);

输出:

<i>Sono misterioso</i>
<p>Ciao</p>
<p>some text</p>
<br />
<p>another text</p>

关于java - 是否可以删除不需要的标签的文本节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35150963/

相关文章:

java - 排序多个 ArrayLists 建议?

java - Eclipse 报告 "Failed to load JNI shared library"

java - 在 JTextField 上设置光标

java - 美国宇航局世界风 : How do you fix these weird run time exceptions?

javascript - 我可以使用来自 JavaScript 的内容预填充 iframe 吗?

java - Jsoup Java For 循环和元素

html - 使用相对单位的最大宽度查询 Flexbox 显示

html - 为什么我在 Godaddy 中的大图片无法显示?

java - 在 Jsoup 中使用 execute() 时出现 SocketTimeoutException

java - 如何在jsoup解析中选择类