2013-07-18 6 views
5

के साथ एक्सएमएल के रूप में आउटपुट स्वरूपण करना मेरा प्रोग्राम मूल रूप से एक इनपुट फ़ाइल पढ़ता है, उस फ़ाइल से lxml.etree बनाता है, उदाहरण के लिए मैं एट्री में एक नोड जोड़ता हूं और फिर मैं उसे एक फ़ाइल पर प्रिंट करना चाहता हूं। तो इसे वापस लिखने के लिए एक फ़ाइल का उपयोग मैं पर:एलएक्सएमएल

et.write('Documents\Write.xml', pretty_print=True) 

और उत्पादन मेरे पास है:

<Variable Name="one" RefID="two"> 
    <Component Type="three"> 
     <Value>four</Value> 
    </Component> 
</Variable> 

कहाँ हूँ:

<Variable Name="one" RefID="two"><Component Type="three"><Value>four</Value></Component></Variable> 

मैं की तरह कुछ करना चाहते हैं जबकि मुझे गलती हुई? मैंने कई समाधानों की कोशिश की है लेकिन कोई भी काम नहीं करता है (सुंदरसप, साफ, पार्सर ...)

+0

क्या यह विंडोज़ से संबंधित हो सकता है? यदि आप अपनी आउटपुट फ़ाइल को 'io' मॉड्यूल के साथ खोलने का प्रयास करते हैं:' fp = io.open ('दस्तावेज़ \ Write.xml', 'w', newline = '\ r \ n') और फिर 'fp' को लिखें 'जैसे' et.write (fp, pretty_print = True) ' (देखें http://docs.python.org/2/library/io.html#io.open) –

+0

हाय पॉल, मैं कोशिश कर रहा हूं कि आप क्या कर रहे हैं कहते हैं लेकिन एफपी क्या है? फाइल मैं लिखना चाहता हूँ? क्षमा करें मैं एक नौसिखिया हूँ! – JAWE

+0

बस एक फ़ाइल सूचक जो फ़ाइल लिखना चाहते हैं, हां। 'et.write()' इनपुट के रूप में एक फ़ाइल नाम या खुली फ़ाइल सूचक के रूप में ले सकता है, जैसे 'io.open' से आने वाली कुछ चीज़ (http://lxml.de/api/lxml.etree._ElementTree-class.html#write)। आप 'आयात io'' का प्रयास कर सकते हैं, फिर 'et.write (io.open (' दस्तावेज़ \ Write.xml ',' w ', newline =' \ r \ n '), pretty_print = True) ' –

उत्तर

1

यह अजीब बात है, क्योंकि यह बिल्कुल काम करने का तरीका है। आप इस कोशिश कर सकते हैं:

root = etree.XML(YOUR XML STRING) 
print etree.tostring(root, pretty_print=True) 

<Variable Name="one" RefID="two"> 
    <Component Type="three"> 
    <Value>four</Value> 
    </Component> 
</Variable> 

यह एक स्वरूपित स्ट्रिंग है, जो आप अपने आप को संसाधित कर सकते हैं उत्पन्न करनी चाहिए।

+1

उत्तर के लिए धन्यवाद लेकिन यह है कि मैं कैसे करता हूं। और इस तरह से यह काम करता है, लेकिन जब मैं एक फाइल पर लिखता हूं तो..मुझे नहीं पता क्यों! फिर भी धन्यवाद। – JAWE

+0

मैं भी वही कर रहा हूं लेकिन @JAWE – adubey

2

मानक पार्सर का उपयोग न करें। remove_blank_text = True के साथ एक कस्टम पार्सर का उपयोग करें।

parser = etree.XMLParser(remove_blank_text=True) 
tree = etree.parse(self.output_file, parser=parser) 
// Do stuff with the tree here 
tree.write(your_output_file, pretty_print=True) 
+0

के समान समस्या में चल रहा था, मुझे एक ही समस्या थी और यह मेरे लिए काम करता था, जैसा कि यहां है: http://stackoverflow.com/questions/7903759/pretty-print-in- lxml-है-नाकाम रहने-जब-ए-एड-टैग-टु-ए-पार्स पेड़ – cptPH

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