jsoup:从1.7.3更新到1.8.1后有不同的结果,如何避免这种情况?

从jsoup 1.7.3更新到1.8.1后,我得到了不同的结果。 在1.7.3中,title属性被返回转义,与输入相同,在1.8.1中br被转换为标签。 有没有办法可以避免这种行为?

String content = "Test
Test
"; Document document = Jsoup.parseBodyFragment(content); document.outputSettings().charset(Charset.forName("ASCII")); //$NON-NLS-1$ System.out.println(document.body().html());

结果:

 // 1.7.3 Test
Test
// 1.8.1 <a href="javascript:openObj('Classifier_UUID')" title="Test
Test">Test
Test

这有点晚了但可以帮助其他人。

我从jsoup 1.7.2升级到1.11.3并且具有与转义不再隐含的相同行为。

以下代码为我做了诀窍:

 String cleanText = Jsoup.clean(s, Whitelist.none()); //& and <,> are escaped from .clean call so we have to unescape them String cleanUnencodedText = StringEscapeUtils.unescapeHtml3(cleanText); String cleanEncodedText = StringEscapeUtils.escapeHtml3(cleanUnencodedText); 

正如你所看到的,我首先不得不cleanedText因为& < <Jsoup.Clean调用转义。

您可以使用unescapeHtml4escapeHtml4而不是Html 3版本。 我不得不支持旧的html版本因为例如Html 4逃脱