2017-04-07 68 views
0

使用Jsoup.clean(),jsoup變成一個HTML鏈路的title屬性從:如何保持與jsoup的鏈接標題屬性?

<a href="" title="test &lt;br /&gt;">TEST</a> 

成:

<a href="" title="test <br />">TEST</a> 

此爲演示應用:

Whitelist whitelist = new Whitelist(); 
whitelist.addTags("a"); 
whitelist.addAttributes("a", "href", "title"); 

String input = "<a href=\"\" title=\"test &lt;br /&gt;\">TEST</a>"; 
System.out.println("input: " + input); 
String output = Jsoup.clean(input, whitelist); 
System.out.println("output: " + output); 

它打印:

input: <a href="" title="test &lt;br /&gt;">TEST</a>
output: <a href="" title="test <br />">TEST</a>

我試圖添加OutputSettingsEscapeMode

OutputSettings outputSettings = new OutputSettings(); 
outputSettings.escapeMode(EscapeMode.xhtml); 

EscapeMode.baseEscapeMode.extend沒有任何效果。 EscapeMode.xhtml打印以下內容:

input: <a href="" title="test &lt;br /&gt;">TEST</a>
output: <a href="" title="test &lt;br />">TEST</a>

任何想法如何jsoup不操縱title標籤?

回答

2

這是一個已知問題/行爲:https://github.com/jhy/jsoup/issues/684(標記爲「將不會修復」jsoup團隊)。

這裏沒有問題。

在序列化時(即在您的示例中,當您打印出XML/HTML時),我們會根據需要轉義爲少量字符。這就是爲什麼>沒有逃到>;因爲它在引用屬性中,所以關閉標籤沒有歧義,所以它不會被轉義。

+0

您是否知道,是否有解決方法或破解我可以抑制這種行爲? –

+0

@ flavio.donze - 不,不幸的是,我想不出任何解決方法,除了補丁JSoup本身,或後處理輸出。 – zeppelin

+0

最終修補了... API會很好,也許設置自己的自定義EscapeMode。 –