用于HTML清理的库

时间:2009-12-22 15:21:28

标签: java html parsing

我正在寻找一个html清理程序,我可以根据API调用它来清理我从webapp获取的字符串。是否有一些有用的易用库?有谁知道可能有一两个?

我不需要大的东西,只需要能够找到未封闭的标签并关闭它们。

5 个答案:

答案 0 :(得分:24)

https://github.com/OWASP/java-html-sanitizer现已标记为可以投入生产使用了。

  

使用Java编写的快速且易于配置的HTML Sanitizer,它允许您在Web应用程序中包含由第三方创作的HTML,同时防止XSS。

您可以使用prepackaged policies

Sanitizers.FORMATTING.and(Sanitizers.LINKS)

tests显示如何轻松配置自己:

new HtmlPolicyBuilder()
    .allowElements("a")
    .allowUrlProtocols("https")
    .allowAttributes("href").onElements("a")
    .requireRelNofollowOnLinks()

或编写自定义政策,例如将h1更改为div以及某个类:

new HtmlPolicyBuilder()
    .allowElements("h1", "p")
    .allowElements(
        new ElementPolicy() {
          public String apply(String elementName, List<String> attrs) {
            attrs.add("class");
            attrs.add("header-" + elementName);
            return "div";
          }
        }, "h1"))

答案 1 :(得分:10)

JTidy可能对您有帮助。

答案 2 :(得分:2)

除了JTidy之外,你还可以看看:
Nekohtml
TagSoup
Getting text in HTmL document

答案 3 :(得分:2)

HTML解析器 JSoup 还支持政策制裁:http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer

答案 4 :(得分:1)