2015-11-28 37 views
2

我想看看是否可以在转换后用Jsoup找回原始字符串。关于Jsoup身份转换

Document doc = Jsoup.parse("<html><body><span>&rarr;</span></body></html>"); 
String str = doc.toString(); 
System.out.println(str); 

我想输出是等效的HTML(格式抛在一边)。 这里“rarr”字符串被破坏。 那么,我必须使用什么功能?

+0

它类似于此:http://stackoverflow.com/questions/19656463/keep-xml-entities-in-output-jsoup –

+0

我创建了一个[GitHub上的问题(https://github.com/JHY/jsoup /问题/ 660)。 –

回答

0

Pete Houston带我走上了issue 660的轨道。

可以使用做到这一点:

doc 
    .outputSettings() 
    .charset("ascii") 
    .escapeMode(Entities.EscapeMode.extended); 
String str = doc.toString(); 

输出将是:

<html> 
<head></head> 
<body> 
    <span>&srarr;</span> 
</body> 
</html> 

输出与输入略有不同(的&srarr;代替&rarr;),因为:

根据HTML5命名字符refe

分配办法, http://www.w3.org/TR/2011/WD-html5-20110113/named-character-references.html

&srarr;相同&rarr;也一样,同样&RightArrow;&ShortRightArrow; ...

如你所知,jsoup做验证(越狱/ UNESCAPE)在处理 输入和映射HTML实体在实体中定义 - *。properties; 好吧,因为有几个实体的名称代表相同的 Unicode值\u02192在您的情况下,如果我没有弄错,映射是与第一个 匹配完成的。

+1

谢谢!这是有效的,它有一个简单的函数来封装这个复杂的命令序列来生成合理的HTML。为什么不能doc.html()做到​​这一点? – fodon