2011-11-14 9 views
7

मैं पायथन का उपयोग कर एक XML फ़ाइल पढ़ रहा हूं। लेकिन मेरे xml फ़ाइल, & वर्ण हैं जिसकी वजह से मेरी अजगर कोड चल रहा है, यह निम्न त्रुटि देता है:पायथन 'और' वर्णों की उपस्थिति के कारण 'अच्छी तरह से गठित xml' त्रुटि नहीं देता

xml.parsers.expat.ExpatError: not well-formed (invalid token): 

वहाँ अजगर द्वारा & जांच की अनदेखी करने के लिए एक रास्ता है?

+1

संभव डुप्लिकेट http://stackoverflow.com/questions/1328538/how-do-i-escape-ampersands -in-xml) –

+0

@ जेम्स: वास्तव में नहीं, क्योंकि सवाल यह है कि लगभग कुछ ऐसा नहीं है जो काफी एक्सएमएल नहीं है, न कि एक्सएमएल को पहले स्थान पर कैसे बनाया जाए। – geoffspear

+3

क्या आपके पास मूल "एक्सएमएल" फ़ाइल बनाने वाले घृणित नियंत्रण पर नियंत्रण है ताकि आप इसे वास्तव में वैध एक्सएमएल दे सकें? – geoffspear

उत्तर

6

नहीं, आप चेक को अनदेखा नहीं कर सकते हैं। आपकी 'एक्सएमएल फाइल' एक एक्सएमएल फ़ाइल नहीं है - एक एक्सएमएल फ़ाइल होने के लिए, एम्परसैंड से बच जाना होगा। इसलिए, कोई भी सॉफ्टवेयर जो XML फ़ाइलों को पढ़ने के लिए डिज़ाइन नहीं किया गया है, बिना त्रुटि के इसे पार्स करेगा। आपको इस फ़ाइल को उत्पन्न करने वाले सॉफ़्टवेयर को सही करने की आवश्यकता है ताकि यह उचित ("अच्छी तरह से गठित") एक्सएमएल उत्पन्न करे। एक्सचेंज के लिए एक्सएमएल का उपयोग करने के सभी लाभ पूरी तरह से गायब हो जाते हैं अगर लोग ऐसी चीजें भेजना शुरू करते हैं जो अच्छी तरह से गठित नहीं होते हैं और इसे प्राप्त करने वाले लोग इसे पकड़ने की कोशिश करते हैं।

+3

यह सिर्फ सही नहीं है। 1) बहुत सारे नरम हैं जो इस तरह की फाइल को पार्स करते हैं - कोई भी इंटरनेट ब्राउजर करता है, साथ ही एक्सकोड जैसे आईडीई भी करता है। 2) आप लोगों से नरम को ठीक करने के लिए नहीं कह सकते हैं जो एक्सएमएल का उत्पादन करता है क्योंकि सामान्य स्थिति में यह तीसरी पार्टी नरम है। – LiMar

+0

ऐसे सॉफ्टवेयर उत्पाद हो सकते हैं जो ऐसी फाइलों को पार्स कर सकें, लेकिन ऐसा सॉफ़्टवेयर उत्पाद एक्सएमएल पार्सर नहीं है। अनुरूप एक्सएमएल पार्सर्स को एक्सएमएल फाइलों में सभी त्रुटियों की रिपोर्ट करने की आवश्यकता है। इंटरनेट ब्राउज़र, जहां तक ​​मैं स्थापित करने में सक्षम हूं, एक्सएमएल के रूप में कार्यरत फ़ाइल को सही तरीके से अस्वीकार कर देता हूं यदि इसमें एक अनपेक्षित एम्परसैंड है। –

+2

और जब सॉफ्टवेयर खराब एक्सएमएल उत्पन्न कर रहा है, तो इसे ठीक करना सही समाधान है। खराब एक्सएमएल उत्पन्न करना आपके स्वयं के आविष्कार का एक मालिकाना प्रारूप उत्पन्न करने जैसा ही है - मानक को अपनाने में कोई बात नहीं है और फिर इसे ठीक से कार्यान्वित नहीं किया जा रहा है। –

2

स्ट्रिंग के सामने "<?xml version='1.0' encoding='iso-8859-1'?>" लाइन जोड़ने के लिए चाल चल रही है।

>>> text = '''<?xml version="1.0" encoding="iso-8859-1"?> 
    ... <seuss><fish>red</fish><fish>blu\xe9</fish></seuss>''' 
>>> doc = elementtree.ElementTree.fromstring(text) 

इस पेज का संदर्भ लें https://mail.python.org/pipermail/tutor/2006-November/050757.html

की [मैं XML में ऐम्परसेंड कैसे बच सकता हूं?] (
संबंधित मुद्दे

 संबंधित मुद्दे