gpt4 book ai didi

python - 使用 Python/Elementtree 将具有相同标签的多个子元素添加到 en XML 树中

转载 作者:太空宇宙 更新时间:2023-11-04 08:35:45 28 4
gpt4 key购买 nike

我正在从 python 字典中读取数据并尝试在下面的树中添加更多书籍元素。下面只是一个示例,我需要复制一个元素及其子元素但替换内容,在这种情况下我需要复制 book 元素但替换标题和作者。

  <store>
<bookstore>
<book>
<title lang="en">IT book</title>
<author>Some IT Guy</author>
</book>
</bookstore>
</store>

我使用这段代码:

root = et.parse('Template.xml').getroot()
bookstore = root.find('bookstore')
book = root.find('bookstore').find('book')

然后我通过字典运行循环并尝试在书店下添加新的书籍元素:

for bk in bks:
book.find('title').text = bk
bookstore.append(book)

结果是 book 元素被添加到书店,但是它们都包含循环最后一次迭代的标题。我知道我在这里做错了什么,但我不明白是什么。我试过:

book[0].append(book) and book[-1].append(book)

但这并没有帮助。

最佳答案

你改变了同一个对象。

您需要使用 copy.deepcopy 实际复制对象

例子:

import xml.etree.ElementTree as et
import copy

root = et.parse('Template.xml').getroot()
bookstore = root.find('bookstore')
book = root.find('bookstore').find('book')

bks = ["book_title_1", "book_title_2", "book_title_3"]
for bk in bks:
new_book = copy.deepcopy(book)
new_book.find('title').text = bk
bookstore.append(new_book)

print et.tostring(root)

关于python - 使用 Python/Elementtree 将具有相同标签的多个子元素添加到 en XML 树中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49259985/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com