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

Mat*_*aug 6 html javascript java jsoup

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

<span data-attr='JSON'></span>
Run Code Online (Sandbox Code Playgroud)

该HTML代码段已转换为

<span data-attr="JSON"></span>
Run Code Online (Sandbox Code Playgroud)

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

{"param" : "value"} //valid
{'param' : 'value'} //invalid
Run Code Online (Sandbox Code Playgroud)

所以我们需要强制Jsoup 不要将那些单引号改为双引号,但是如何?目前,这是我们解析和生成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 :(
Run Code Online (Sandbox Code Playgroud)

Chr*_*sen 2

您需要对 JSON 值进行 HTML 编码,然后再将其放入data-attr属性中。当你这样做时,你应该得到这样的结果:

<span data-attr="{&quot;param&quot;:&quot;value&quot;}"></span>
Run Code Online (Sandbox Code Playgroud)

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