8

我想使用 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并保存文件。

4

2 回答 2

10

在这里,获取树的根,追加新元素,将树作为字符串保存到文件中:

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', 'wb')
f.write(etree.tostring(root, pretty_print=True))
f.close()
于 2013-06-21T22:55:38.740 回答
1

我没有足够的声誉来发表评论,因此我会写一个答案......

使 Guillaume 的代码工作的最简单的更改是更改行

f = open('books-mod.xml', 'w')

f = open('books-mod.xml', 'wb')
于 2019-05-30T10:11:37.507 回答