2012-05-14 6 views
5

मैं एक etree वस्तु बुलाया projectxml है:एट्री एक्सएमएल ऑब्जेक्ट को कैसे सेव करें? lxml etree वस्तुओं लोड करने में समस्या बचत

projetxml type <type 'lxml.etree._Element'> 

मैं डिस्क पर यह बचाने की जरूरत है, तो मैं यह तत्व पेड़ में बदलने का:

savedxml=et.ElementTree(projetxml) 
savedxml.write('/home/simon/Vysis.xml') 

एक अन्य स्क्रिप्ट था Vysis.xml और एक ही तरह के दो अन्य फ़ाइलों को लोड करने के:

vysis=et.parse('/home/simon/Vysis.xml') 
asi=et.parse('/home/simon/ASI.xml') 
psi=et.parse('/home/simon/PSI.xml') 

अब एएसआई, साई और Vysis lxml वस्तुओं उदाहरण के लिए प्रकार के होते हैं:

<lxml.etree._ElementTree object at 0xa7eaf8c> 

मेरे समस्या यह है कि मैं कोई और अधिक कर सकते हैं:

R=et.Element('DataBase') 
R.append(asi) 
R.append(psi) 
R.append(vysis) 
त्रुटि के कारण

:

R.append(asi) 
    File "lxml.etree.pyx", line 697, in lxml.etree._Element.append (src/lxml /lxml.etree.c:35471) 
TypeError: Argument 'element' has incorrect type (expected lxml.etree._Element, got lxml.etree._ElementTree) 

मुझे लगता है मैं दो समाधान है लगता है। पहला व्यक्ति एट्री को कनवर्ट करने से बचने के लिए हो सकता है। एट्री। एलिमेंट ट्री में एलीमेंट और इसे "सीधे" सेव करने के लिए, लेकिन मुझे नहीं पता कि कैसे। दूसरा समाधान वापस आइस्री को परिवर्तित करना होगा। एलीमेंट ट्री एट्री। एलिमेंट टाइप ... एक्सएमएल ऑब्जेक्ट को सहेजने/लोड करने के लिए एक साफ समाधान होना चाहिए?

+0

शायद यह आप ?: http://stackoverflow.com/questions/8274438/saving-an-lxml-etree-elementtree-object – cptPH

उत्तर

6

parse functionElementTree देता है, Element नहीं। यदि आप तत्वों के रूप में parse के परिणामों का उपयोग करना चाहते हैं, तो आपको getroot पर कॉल करने की आवश्यकता है।

vysis=et.parse('/home/simon/Vysis.xml').getroot() 
asi=et.parse('/home/simon/ASI.xml').getroot() 
psi=et.parse('/home/simon/PSI.xml').getroot() 

R=et.Element('DataBase') 
R.append(asi) 
R.append(psi) 
R.append(vysis) 
+0

धन्यवाद के लिए क्या देख रहे, बस इतना ही है !! –