6

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

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

该 HTML 片段被转换为

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

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

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

所以我们需要强制 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 :(
4

1 回答 1

2

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

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

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

于 2012-12-05T14:41:56.730 回答