2010-05-17 15 views
12

के साथ टैग में एकाधिक एक्सएमएल नेमस्पेस मैं एक जीपीएक्स फ़ाइल बनाने के लिए पाइथन एलएक्सएमएल लाइब्रेरी का उपयोग करने की कोशिश कर रहा हूं जिसे गार्मिन के मैप्ससोर्स उत्पाद द्वारा पढ़ा जा सकता है। उनके GPX फाइलें पर हैडर इसएलएक्सएमएल

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
<gpx xmlns="http://www.topografix.com/GPX/1/1" 
    creator="MapSource 6.15.5" version="1.1" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"> 

तरह लग रहा है जब मैं निम्नलिखित कोड का उपयोग करें:

xmlns = "http://www.topografix.com/GPX/1/1" 
xsi = "http://www.w3.org/2001/XMLSchema-instance" 
schemaLocation = "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" 
version = "1.1" 
ns = "{xsi}" 

getXML = etree.Element("{" + xmlns + "}gpx", version=version, attrib={"{xsi}schemaLocation": schemaLocation}, creator='My Product', nsmap={'xsi': xsi, None: xmlns}) 
print(etree.tostring(getXML, xml_declaration=True, standalone='Yes', encoding="UTF-8", pretty_print=True)) 

मैं:

<?xml version=\'1.0\' encoding=\'UTF-8\' standalone=\'yes\'?> 
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://www.topografix.com/GPX/1/1" xmlns:ns0="xsi" 
    ns0:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" 
    version="1.1" creator="My Product"/> 

कौन सा कष्टप्रद ns0 टैग है। यह पूरी तरह से मान्य एक्सएमएल हो सकता है लेकिन मैप्ससोर्स इसकी सराहना नहीं करता है।

कोई विचार यह कैसे प्राप्त करें कि ns0 टैग न हो?

उत्तर

11

समस्या आपके विशेषता नाम के साथ है।

attrib={"{xsi}schemaLocation" : schemaLocation}, 

xsi नेमस्पेस में schemaLocation डालता है।

मुझे लगता है कि आप

attrib={"{" + xsi + "}schemaLocation" : schemaLocation} 

मतलब xsi के लिए URL का उपयोग करने के लिए। यह तत्व नाम में नेमस्पेस चर के आपके उपयोग से मेल खाता है। यह http://www.w3.org/2001/XMLSchema-instance नाम स्थान

में विशेषता डालता

<?xml version='1.0' encoding='UTF-8' standalone='yes'?> 
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://www.topografix.com/GPX/1/1" 
    xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" 
    version="1.1" 
    creator="My Product"/> 
+0

का परिणाम देता है कि देखें यही कारण है कि मैं एक शौकिया हूँ और जीने के लिए कोड नहीं! बिल्कुल सही जवाब। धन्यवाद! – lonerockz