2012-11-29 34 views
6

Bir html şablonunu ayrıştırmak, değiştirmek ve genişletmek için Jsoup kullanıyoruz. Şimdiye kadar her şey HTML ile birlikte kullanılan tek tırnak gelinceye kadar çalışıyor HTML pasajı geçerli olarak belirtilir iç json verileri ile çelişmesiJsoup, HTML özelliklerinde tek tırnak işaretinden çift alıntıya çıktıyı değiştiriyor

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

dönüştürülür Yani

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

nitelikleri çift ​​tırnak ile sadece

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

yüzden dEĞİL değişime bu tek tırnak Jsoup zorlamak gerekir çift ​​tırnak, ama nasıl? Şu anda bu html içeriğini ayrıştırmak ve üretmek için kodumuzdur. Sen HTML gerek

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

Bu, Jsoup uygulamasında bir hata olabilir. Http://jsoup.org/bugs – Vulcan

+0

adresinden raporları (ya da daha da iyisi tartışabilirsiniz) bildirebilirsiniz. Buradaki sorunun ne olduğunu anladığımdan emin değilim. Son çıktınızın bir örneğini ve bunun yerine olmasını istediğiniz bir çıktı örneği verebilir misiniz? '? Eğer öyleyse, neden '? –

+0

" geçerli json değil, ne yapmalıyım, yoksa yanlış mıyım? Ve evet, işlenmeden önce şablon, data-attr = '' 've Jsoup'un yardımıyla Json'u tek tırnaklar arasında ekliyorum. Ama sonuçta ortaya çıkan şablonu oluşturup kaydettiğimde, veri-attr = "{" data ":" value "}" 'ama bekliyorum" data-attr = '{"data": "value"}' ' – MatthiasLaug

cevap

2

data-attr öznitelik içine koyarak önce JSON değerini kodlamak. Bunu yaptığınızda, bu ile bitirmek gerekir:

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

olduğundan oldukça zor gibi görünse de, aslında geçerli HTML. İlgili JavaScript'iniz someSpan.getAttribute("data-attr")'u çalıştırdığında, &quot; değerleri otomatik olarak " değerlerine dönüştürülecek ve orijinal geçerli JSON dizesine erişmenize olanak sağlayacaktır.

İlgili konular