2012-05-14 17 views
5

私はetreeオブジェクトと呼ばprojectxml持っている:私は、ディスクに保存する必要がetree xmlオブジェクトを保存するには? etreeオブジェクトの問題lxmlの読み込みを保存

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') 

を今ASI、PSIおよび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) 

私は私は2つのソリューションを持っていると仮定します。最初の方法は、etree.Elementをetree.ElementTreeに変換し、それを「直接」保存することを避けることができますが、どうすればよいか分かりません。 2番目の解決策は、etree.ElementTreeをetree.Element型に逆変換することです。xmlオブジェクトを保存/ロードするにはクリーンなソリューションが必要ですか?

+0

多分これはあなたが http://stackoverflow.com/questions/8274438/saving-an-lxml-etree-elementtree-object – cptPH

答えて

6

parse functionは、Elementではなく、ElementTreeを返します。 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

?:探しているものであるが、それだ、ありがとう! –

関連する問題