2013-06-21 3 views
7

Я хочу обновить xml-файл с помощью новой библиотеки lxml. Например, у меня есть этот код:Как обновить XML-файл с помощью lxml

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

где файл 'books.xml', имеет это содержание: http://www.w3schools.com/dom/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>''') 

Мой вопрос в том, как я могу обновить дерево элементов tree с деревом new_entry и сохранить файл.

+1

: о я заслужил -1 за какой-то причине? – user2136786

ответ

8

Здесь вы идете, получить корень дерева, добавьте свой новый элемент, сохраните дерево в виде строки в файл:

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

Спасибо Guillaume :) – user2136786