如何使用jsoup保持链接标题属性?

时间:2017-04-07 13:46:24

标签: java jsoup

使用Jsoup.clean(),jsoup会转换HTML链接的title属性:

<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>

我尝试使用OutputSettings添加EscapeMode

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标签?

1 个答案:

答案 0 :(得分:2)

这是一个已知问题/行为:https://github.com/jhy/jsoup/issues/684(标记为&#34;赢得&#39; t修复&#34; jsoup 团队)。

  

这里没有错误。

     

在序列化时(例如,在您打印XML / HTML的示例中),我们会根据需要转义少量字符。这就是为什么&gt;未转义为&gt ;;因为它处于引用属性中,所以它没有关闭标记的歧义,所以它不会被转义。