Jsoup.clean() 保持未关闭并打开标签

Dar*_*usz 2 html java xml jsoup

以下代码将此文本: 替换<br /><br>

String removeDisallowedTags(String textToEscape) {
    Whitelist whitelist = Whitelist.none();
    whitelist.addTags(new String[] { "b", "br", "font" });

    String safe = Jsoup.clean(textToEscape, whitelist);
    return safe;
}
Run Code Online (Sandbox Code Playgroud)

为什么?

Dar*_*usz 7

Jsoup.clean()默认情况下将文档处理为 HTML,并且<br>允许在 HTML 中不带结束标记。与 一样<img>

您必须将代码解析为 XML。这将使标签保持关闭状态 - 它甚至会为您关闭它们。具有一些附加设置的固定方法:

String cleanXmlAndRemoveUnwantedTags(String textToEscape) {
    Whitelist whitelist = Whitelist.none();
    whitelist.addTags(allowedTags);

    OutputSettings outputSettings = new OutputSettings()
                    .syntax(OutputSettings.Syntax.xml)
                    .charset(StandardCharsets.UTF_8)
                    .prettyPrint(false);

    String safe = Jsoup.clean(textToEscape, "", whitelist, outputSettings);
    return safe;
}
Run Code Online (Sandbox Code Playgroud)