2012-11-29 25 views
6

हम एक 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 :(
+0

यह जसूप के कार्यान्वयन में एक बग हो सकता है। Http://jsoup.org/bugs – Vulcan

+0

पर आप रिपोर्ट कर सकते हैं (या इससे भी बेहतर, डेवलपर्स के साथ चर्चा कर सकते हैं) मुझे यकीन नहीं है कि मैं समझता हूं कि यह समस्या क्या है। क्या आप अपने अंतिम आउटपुट का एक उदाहरण प्रदान कर सकते हैं, और आउटपुट का एक उदाहरण जिसके बजाय आप चाहते हैं? क्या आप कह रहे हैं कि आप < 'के साथ समाप्त हो रहे हैं। '> '? यदि हां, तो आप < 'की अपेक्षा क्यों नहीं करते? –

+0

" मान्य जेसन नहीं है, तो मैं इसके साथ क्या करूँगा, या क्या मैं गलत हूं? और हाँ प्रसंस्करण से पहले टेम्पलेट 'डेटा-attr =' 'है और Jsoup की मदद से मैं एकल उद्धरण के बीच जेसन जोड़ रहा हूं। लेकिन एक बार परिणामस्वरूप टेम्पलेट को प्रतिपादित करने और सहेजने के बाद मुझे 'डेटा-एटीआर = "{" डेटा ":" वैल्यू "}" 'मिलता है, लेकिन मुझे उम्मीद है कि' डेटा-एटीआर = '{" डेटा ":" वैल्यू "}'' – MatthiasLaug

उत्तर

2

आप HTML करने की जरूरत है यह data-attr विशेषता में डाल से पहले JSON मूल्य सांकेतिक शब्दों में बदलना। जब आप ऐसा करते हैं, तो आपको इसके साथ समाप्त होना चाहिए:

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

हालांकि यह काफी चुनौतीपूर्ण दिखता है, यह वास्तव में मान्य HTML है। जब आपकी संबंधित जावास्क्रिप्ट someSpan.getAttribute("data-attr") निष्पादित करती है, तो &quot; मान स्वचालित रूप से " मानों में परिवर्तित हो जाएंगे, जिससे आपको मूल मान्य JSON स्ट्रिंग तक पहुंच मिल जाएगी।