我的代码使用jsoup cleaner从文档中删除不需要的元素。我注意到在清理操作之后,许多空文本节点仍然存在。由于它们没有子节点,因此可以删除它们。
想知道是否有人已经为此实施了解决方案......
文件输出到字符串如下:
答案 0 :(得分:1)
删除空标签可能会很棘手,因为有些标签总是空的(例如<br/>
和<img/>
),其他标签即使在空的情况下也会影响文档的布局(例如<p></p>
)。更糟糕的是,某些CSS配置可能会导致几乎任何类型的标签影响文档布局(例如字体图标)。
如果您可以决定愿意删除哪些元素,则以下内容应该有效:
// Names of the elements to remove if empty
Set<String> removable = ....
// Parse the html into a jsoup document
Document source = Jsoup.parse(myHtml);
// Clean the html according to a whitelist
Document cleaned = new Cleaner(whitelist).clean(source);
// For each element in the cleaned document
for(Element el: cleaned.getAllElements()) {
if(el.children().isEmpty() && !el.hasText()) {
// Element is empty, check if should be removed
if(removable.contains(el.tagName())) el.remove();
}
}