2012-05-14 7 views
5

Mam obiektu etree nazwie projectxml:Jak zapisać obiekt xml xml? oszczędność załadunek lxml etree obiektów numerze

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

muszę zapisać go na dysku, więc przekonwertować go do elementu drzewa:

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

Innym skrypt miał załadować na Vysis.xml i dwa inne pliki tego samego rodzaju:

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

teraz asi, PSI i Vysis lxml obiekty są typu na przykład:

<lxml.etree._ElementTree object at 0xa7eaf8c> 

Moim problemem jest to, że nie mogę więcej zrobić:

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

powodu błędu:

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) 

Przypuszczam Mam dwa rozwiązania. Pierwszym z nich może być uniknięcie konwersji etree.Element na etree.ElementTree i zapisanie go "bezpośrednio", ale nie wiem jak. Drugim rozwiązaniem byłoby przekonwertować etree.ElementTree na etree.Element typu ... Powinno być czyste rozwiązanie do zapisania/załadowania obiektu XML?

+0

może to jest to, czego szukasz ?: http://stackoverflow.com/questions/8274438/saving-an-lxml-etree-elementtree-object – cptPH

Odpowiedz

6

Urządzenie parse function zwraca wartość ElementTree, a nie Element. Jeśli chcesz użyć wyników z parse jako elementów, musisz zadzwonić pod numer 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

Dziękuję, to jest to !! –

Powiązane problemy