2013-06-21 20 views
7

Chcę zaktualizować plik xml o nowe informacje przy użyciu biblioteki lxml. Na przykład, mam ten kod:Jak zaktualizować plik XML za pomocą lxml

>>> from lxml import etree 
>>> 
>>> tree = etree.parse('books.xml') 

Gdzie Books.xml 'plik ma taką zawartość: http://www.w3schools.com/dom/books.xml

Chcę zaktualizować ten plik z nową książką:

>>> new_entry = etree.fromstring('''<book category="web" cover="paperback"> 
... <title lang="en">Learning XML 2</title> 
... <author>Erik Ray</author> 
... <year>2006</year> 
... <price>49.95</price> 
... </book>''') 

Moje pytanie brzmi: jak mogę zaktualizować drzewo elementu tree z drzewem new_entry i zapisać plik.

+1

: o zasłużyłem -1 dla jakiegoś powodu? – user2136786

Odpowiedz

8

Tu idziesz, dostać korzeń drzewa, dołączyć swój nowy element, zapisz drzewa jako ciąg do pliku:

from lxml import etree 

tree = etree.parse('books.xml') 

new_entry = etree.fromstring('''<book category="web" cover="paperback"> 
<title lang="en">Learning XML 2</title> 
<author>Erik Ray</author> 
<year>2006</year> 
<price>49.95</price> 
</book>''') 

root = tree.getroot() 

root.append(new_entry) 

f = open('books-mod.xml', 'w') 
f.write(etree.tostring(root, pretty_print=True)) 
f.close() 
+1

Dzięki Guillaume :) – user2136786

Powiązane problemy