2012-11-29 12 views
6

私たちはJsoupを使ってHTMLテンプレートを解析、操作、拡張しています。これまでのところすべてが、それはHTMLと組み合わせて使用​​する単一引用符に来るまでは正常に動作HTMLスニペットが有効なものとして指定されている内側のJSONデータと競合するJsoupはHTMLアトリビュートの出力を一重引用符から二重引用符に変更します

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

に変換されていることを

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

属性二重引用符でのみ

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

は、私たちはませ変更にそれらの単一引用符をJsoupを強制する必要があります引用符を二重にするにはどうすればよいでしょうか?現在のところ、HTMLコンテンツを解析して生成するコードです。あなたが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 :(
+0

これはJsoupの実装のバグかもしれません。 http://jsoup.org/bugs – Vulcan

+0

で報告することができます(またはそれ以上に、開発者と議論することができます)。私はここでの問題点を理解していません。最終的な出力の例と、代わりに出力したい出力の例を挙げることができますか? ' '?もしそうなら、あなたはなぜ 'を期待しないのですか? –

+0

"は有効なjsonではないので、どうすればいいですか、間違っていますか?そして、はい、処理前のテンプレートは 'data-attr = '''であり、Jsoupの助けを借りてJsonを単一引用符の間に追加しています。しかし、結果のテンプレートをレンダリングして保存すると、 'data-attr =" {"data": "value"} "'が得られますが、 'data-attr = '{" data ":" value "}" – MatthiasLaug

答えて

2

はがdata-attr属性にそれを置く前に、JSON値をコードします。これを行うと、次のようになります。

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

これはかなり難しいようですが、実際は有効なHTMLです。対応するJavaScriptがsomeSpan.getAttribute("data-attr")を実行すると、&quot;の値は自動的に"の値に変換され、元の有効なJSON文字列にアクセスできます。

関連する問題