繁体   English   中英

Jsoup仅删除html标签

[英]Jsoup remove ONLY html tags

用JSOUP(不使用正则表达式)删除仅html标记(保留所有自定义/未知标记)的正确方法是什么?

预期输入:

<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()

但是它也会删除自定义标签。

这个答案对我不好,因为自定义标签的数量是无限的。

您可能想要尝试这样的事情:

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 MiSt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM