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
调用转义。
您可以使用unescapeHtml4
和escapeHtml4
而不是Html 3版本。 我不得不支持旧的html版本因为例如Html 4逃脱€
€