2015-11-28 68 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