2011-11-21 13 views
5

तो मैं इस एक्सएमएल दस्तावेज़ है में क्वेरी स्ट्रिंग के साथ कोई URL सहित:एक XML दस्तावेज

XML Parsing Error: not well-formed

पर

:

<?xml version="1.0" encoding="UTF-8"?> 
<Root> 
    <Item> 
     <URL>http://www.mysite.com/page?id=1</URL> 
    </Item> 
</Root> 

जब मैं कोशिश करते हैं और दस्तावेज़ को देखने, मैं कह रहा कोई त्रुटि मिलती है = क्वेरी स्ट्रिंग में साइन इन करें। मैंने = को %3D पर साइन करने का प्रयास किया, लेकिन मुझे %

पर एक ही त्रुटि मिलती है मुझे यहां क्या करना चाहिए?

+0

जो भी एक्सएमएल पार्स का दावा है कि यह अच्छी तरह से गठित नहीं है, तो यह टूट गया है एन, क्योंकि यह अच्छी तरह से गठित है। किसी भी ऑनलाइन सत्यापनकर्ता को आज़माएं और वे सभी एक ही बात कहेंगे "अच्छी तरह से गठित, कोई त्रुटि नहीं" – Mecki

उत्तर

12

आप <URL><![CDATA[http://www.mysite.com/page?id=1]]></URL>

एक XML दस्तावेज़ में सभी पाठ पार्सर द्वारा पार्स किया जाएगा कोशिश कर सकते हैं। लेकिन सीडीएटीए अनुभाग के अंदर पाठ को पार्सर द्वारा अनदेखा कर दिया जाएगा। आप अधिक here पा सकते हैं।

+0

हाय, यह मेरे लिए काम किया, धन्यवाद भाई। –

1

कोशिश इस <URL><![CDATA[http://www.mysite.com/page?id=1]]></URL>

14

जैसा कि आप इसे प्रदान करते हैं, एक्सएमएल अच्छी तरह से गठित होता है। आपके पास इसमें भागने के लिए कुछ भी नहीं है। हो सकता है कि आपके पास अपनी स्रोत फ़ाइल में एन्कोडिंग समस्याएं हों। जानकारी के लिए, 2 वर्ण आप XML में पलायन करना होगा रहे हैं:

& in &amp; 
< in &lt; 

वर्ण आप में से बच सकता है विशेषताओं का मान (वाक्य रचना के आधार पर आप विशेषताओं के लिए उपयोग करें: attr='value' या attr="value"):

" in &quot; 
' in &apos; 

संदर्भ के आधार पर, अंतिम चरित्र जो बच निकला जा सकता है:

> in &gt; 
+1

यह सही तरीका है। सीडीएटीए से बचा जाना चाहिए। –

+0

सीडीएटीए से क्यों बचा जाना चाहिए? – Adam

+0

@ एडम: सीडीएटीए अनुभागों में सीडीएटीए में नेस्टिंग सीडीएटीए जैसे कई उपयोग मामलों के लिए कमी आई है (देखें [यहां] (https://en.wikipedia.org/wiki/CDATA#Nesting))। इसका अर्थ यह है कि यदि आप डालना चाहते हैं, उदाहरण के लिए, एक सीडीएटीए अनुभाग में मनमाने ढंग से एक्सएमएल (मुझे पहले से ही उन लोगों का सामना करना पड़ा जिन्होंने कोशिश की), कार्यान्वयन सरल नहीं है। –