Jsoup只删除html标签
问题描述:
用JSOUP(非正则表达式)删除只有html标签(保留所有定制/未知标签)的正确方法是什么?Jsoup只删除html标签
预期输入:
<html>
<customTag>
<div> dsgfdgdgf </div>
</customTag>
<123456789/>
<123>
<html123/>
</html>
预期输出:
<customTag>
dsgfdgdgf
</customTag>
<123456789/>
<123>
<html123/>
我试图用WhiteList.none()清洁使用,但它还会删除自定义标记。
我也试过:
String str = Jsoup.parse(html).text()
但它还会删除自定义标记。
这个answer对我不好,因为自定义标签的数量是无限的。
答
你可能想尝试这样的:
String[] tags = new String[]{"html", "div"};
Document thing = Jsoup.parse("<html><customTag><div>dsgfdgdgf</div></customTag><123456789/><123><html123/></html>");
for (String tag : tags) {
for (Element elem : thing.getElementsByTag(tag)) {
elem.parent().insertChildren(elem.siblingIndex(),elem.childNodes());
elem.remove();
}
}
System.out.println(thing.getElementsByTag("body").html());
请注意:< 123456789 />和< 123>不符合XML标准,使他们获得逃过一劫。另一个缺点可能是你必须明确地写下你不喜欢的所有标签(也就是所有的html标签),并且它可能很慢。没有看过这种运行速度有多快。
MFG 雾
没有完整的配方,但你可能要检查消毒 – Marged