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 に答える