Jsoup将输出从单引号更改为HTML属性的双引号

时间:2012-11-29 16:32:09

标签: java javascript html jsoup

我们正在使用Jsoup来解析,操作和扩展html模板。到目前为止,一切正常,直到单引号与HTML属性结合使用

<span data-attr='JSON'></span>

该HTML代码段转换为

<span data-attr="JSON"></span>

将与内部json数据冲突,该数据仅使用双引号指定为有效

{"param" : "value"} //valid
{'param' : 'value'} //invalid

所以我们需要强制Jsoup NOT 将这些单引号更改为双引号,但是如何?目前,这是我们解析和生成html内容的代码。

pageTemplate = Jsoup.parse(new File(mainTemplateFilePath), "UTF-8");
pageTemplate.outputSettings().escapeMode(Entities.EscapeMode.xhtml);
pageTemplate.outputSettings().charset("UTF-8");

... adding some html 

pageTemplate.html(); // will output the double quoted attributes :(

1 个答案:

答案 0 :(得分:2)

在将放入data-attr属性之前,您需要对JSON值进行HTML编码。当你这样做时,你应该最终得到这个:

<span data-attr="{&quot;param&quot;:&quot;value&quot;}"></span>

虽然这看起来相当令人生畏,但它实际上是有效的HTML。当相应的JavaScript执行someSpan.getAttribute("data-attr")时,&quot;值将自动转换为"值,使您可以访问原始的有效JSON字符串。