清理HTML时,在JSoup中保留编码原样

时间:2014-07-08 19:15:31

标签: java jsoup html-entities

使用JSoup清理时是否可以将编码字符保留为编码?例如,目前<的HTML实体,数字和符号已编码为&lt;。我试过更改EscapeMode,甚至玩了一些charSets,但没有运气:

Document.OutputSettings outputSettings = new Document.OutputSettings();
outputSettings.escapeMode(Entities.EscapeMode.extended);

assert "&lt; &lt; &lt;" == Jsoup.clean("< &lt; &#60;", "http:example.com", 
    Whitelist.basic(), outputSettings);

基于this bug帖子,我还尝试创建自己的清理器并在那里运行内容,但这只是让它们解码:

Cleaner cleaner = new Cleaner(Whitelist.basic());
Document doc = Jsoup.parse("< &lt; &#60;");
assert "< < <" == cleaner.clean(doc).text();

我想要的是输出结果(假设它已列入白名单):

< &lt; &#60;

我意识到这个问题,但是有可能,或者JSoup在这种情况下不是正确的工具吗?

作为一种解决方法,我知道在将它发送到JSoup之前我可以用一些魔术值替换它们,然后再对它们进行重新编码,但这很麻烦,不安全,而且看起来很糟糕。

0 个答案:

没有答案