Jsoup删除只有html标签

时间:2015-11-01 19:58:34

标签: java html tags jsoup strip

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

但它也删除了自定义标签。

answer对我不利,因为自定义标签的数量是无限的。

1 个答案:

答案 0 :(得分:0)

你可能想尝试这样的事情:

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

请注意&lt; 123456789 /&gt;和&lt; 123&gt;不符合xml标准,因此它们会被转义。另一个缺点可能是你必须明确写下你不喜欢的所有标签(也就是所有的html标签),它可能是sloooooow。没看过这将会有多快。

MFG 雾

相关问题