2013-06-21 94 views
7

我想使用lxml庫更新帶有新信息的xml文件。 例如,我有這樣的代碼:如何使用lxml更新XML文件

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

我的問題是,如何使用new_entry樹更新tree元素樹並保存文件。

+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