我想看看是否可以在转换后用Jsoup找回原始字符串。关于Jsoup身份转换
Document doc = Jsoup.parse("<html><body><span>→</span></body></html>");
String str = doc.toString();
System.out.println(str);
我想输出是等效的HTML(格式抛在一边)。 这里“rarr”字符串被破坏。 那么,我必须使用什么功能?
我想看看是否可以在转换后用Jsoup找回原始字符串。关于Jsoup身份转换
Document doc = Jsoup.parse("<html><body><span>→</span></body></html>");
String str = doc.toString();
System.out.println(str);
我想输出是等效的HTML(格式抛在一边)。 这里“rarr”字符串被破坏。 那么,我必须使用什么功能?
Pete Houston带我走上了issue 660的轨道。
可以使用做到这一点:
doc
.outputSettings()
.charset("ascii")
.escapeMode(Entities.EscapeMode.extended);
String str = doc.toString();
输出将是:
<html>
<head></head>
<body>
<span>→</span>
</body>
</html>
但输出与输入略有不同(的→
代替→
),因为:
根据HTML5命名字符refe分配办法, http://www.w3.org/TR/2011/WD-html5-20110113/named-character-references.html
→
相同→
也一样,同样→
,→
...如你所知,jsoup做验证(越狱/ UNESCAPE)在处理 输入和映射HTML实体在实体中定义 - *。properties; 好吧,因为有几个实体的名称代表相同的 Unicode值
\u02192
在您的情况下,如果我没有弄错,映射是与第一个 匹配完成的。
谢谢!这是有效的,它有一个简单的函数来封装这个复杂的命令序列来生成合理的HTML。为什么不能doc.html()做到这一点? – fodon
它类似于此:http://stackoverflow.com/questions/19656463/keep-xml-entities-in-output-jsoup –
我创建了一个[GitHub上的问题(https://github.com/JHY/jsoup /问题/ 660)。 –