Jsoup 仅删除 html 个标签
Jsoup remove ONLY html tags
使用 JSOUP(不是正则表达式)仅删除 html 标签(保留所有 custom/unknown 标签)的正确方法是什么?
预期输入:
<html>
<customTag>
<div> dsgfdgdgf </div>
</customTag>
<123456789/>
<123>
<html123/>
</html>
预期输出:
<customTag>
dsgfdgdgf
</customTag>
<123456789/>
<123>
<html123/>
我尝试将 Cleaner 与 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 标签)并且它可能很慢。还没看这要多快运行。
制造厂
迷雾
使用 JSOUP(不是正则表达式)仅删除 html 标签(保留所有 custom/unknown 标签)的正确方法是什么?
预期输入:
<html>
<customTag>
<div> dsgfdgdgf </div>
</customTag>
<123456789/>
<123>
<html123/>
</html>
预期输出:
<customTag>
dsgfdgdgf
</customTag>
<123456789/>
<123>
<html123/>
我尝试将 Cleaner 与 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 标签)并且它可能很慢。还没看这要多快运行。
制造厂 迷雾