我想使用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>''')
我的问题是,如何使用tree
树更新new_entry
元素树并保存文件。
答案 0 :(得分: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 :(得分:0)
我没有足够的声誉来发表评论,因此我会写一个答案...
使Guillaume的代码工作最简单的更改就是更改行
f = open('books-mod.xml', 'w')
到
f = open('books-mod.xml', 'wb')