如何使用lxml更新XML文件

问题描述 投票:0回答:2

我想使用 lxml 库用新信息更新 xml 文件。 例如,我有这样的代码:

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

其中“books.xml”文件包含以下内容:

https://www.w3schools.com/xml/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
元素树并保存文件。

python xml lxml
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()

2
投票

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

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

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

f = open('books-mod.xml', 'wb')
© www.soinside.com 2019 - 2024. All rights reserved.