关于Jsoup身份转换

时间:2015-11-28 18:09:04

标签: jsoup

我想知道在转换后是否可以使用Jsoup取回原始字符串。

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

我希望输出相当于HTML(格式化)。 在这里&#34; rarr&#34;字符串被肢解。 那么,我必须使用什么功能?

1 个答案:

答案 0 :(得分: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命名的字符引用,   http://www.w3.org/TR/2011/WD-html5-20110113/named-character-references.html

     

&srarr;也与&rarr;相同,与&RightArrow;相同,   &ShortRightArrow; ...

     

如你所知,jsoup在处理时进行验证(escape / unescape)   输入和映射实体中定义的HTML实体 - * .properties;   好吧,因为有几个实体的名字代表相同   在您的情况下,Unicode值\u02192,映射是使用第一个完成的   如果我没弄错的话就匹配。