【发布时间】:2011-10-08 00:01:34
【问题描述】:
在 HTML 清理的某些情况下,我想保留标签之间包含的文本(这是 Jsoup 的默认行为),在某些情况下,我想删除文本以及 HTML 标记。有人可以说明如何使用 Jsoup 删除 HTML 标签之间的文本吗?
【问题讨论】:
-
6 个问题,没有一个被接受。您不感谢这里给您的帮助吗?
在 HTML 清理的某些情况下,我想保留标签之间包含的文本(这是 Jsoup 的默认行为),在某些情况下,我想删除文本以及 HTML 标记。有人可以说明如何使用 Jsoup 删除 HTML 标签之间的文本吗?
【问题讨论】:
1. String html = "<!DOCTYPE html><html><head><title></title></head><body><p>hello there</p></body></html>";
2. Document d = Jsoup.parse(html);
3. System.out.println(d);
4. System.out.println("************************************************");
5. d.getElementsByTag("p").remove();
6. System.out.println(d);
当您使用 Elements 时遇到一些麻烦,您可以在 Document d 对象上执行此操作。这将准确无误。
【讨论】:
Cleaner 将始终删除标签并保留文本。如果您需要删除元素(即标签和文本/嵌套元素),您可以预先解析 HTML,使用 remove() 或 empty() 删除元素,然后通过清理器运行结果。
例如:
String html = "Clean <div>Text dropped</div>";
Document doc = Jsoup.parse(html);
doc.select("div").remove();
// if not removed, the cleaner will drop the <div> but leave the inner text
String clean = Jsoup.clean(doc.body().html(), Whitelist.basic());
【讨论】: