gpt4 book ai didi

python - 如何在 Python 中深度复制 xml 子元素

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:30 24 4
gpt4 key购买 nike

我对 XML 和 Python 非常陌生,并且将本网站和其他网站上的帖子中的内容组合在一起。我正在尝试使用 ElementTree 深度复制一个元素并附加到另一个元素。从下面的输入表开始:

<Company>
<Identifier>Benesolv</Identifier>
<Employee>
<EESSN>111111111</EESSN>
<Dependent>
<SSN>222222222</SSN>
</Dependent>
</Employee>
</Company>

这是我的代码,可以工作,但最终不是我想要的。

import xml.etree.ElementTree as ET
import copy

tree = ET.parse("file.xml")
root = tree.getroot()

x = copy.deepcopy(root[0])
for elem in tree.findall("Company/Employee/Dependent"):
elem.append(copy.deepcopy(x))

tree.write("file.xml")

这是复制 <Identifier> 的输出元素并附加到 <Dependent>元素:

<Company>
<Identifier>Benesolv</Identifier>
<Employee>
<EESSN>111111111</EESSN>
<Dependent>
<SSN>222222222</SSN>
<Identifier>Benesolv</Identifier>
</Dependent>
</Employee>
</Company>

我想做的是复制<EESSN>元素并附加到 <Dependent>元素,但我不知道如何。我想我只是替换 root[0]可以识别<EESSN>的东西元素,但我尝试过的一切都不起作用。感谢您的帮助。

期望的输出:

<Company>
<Identifier>Benesolv</Identifier>
<Employee>
<EESSN>111111111</EESSN>
<Dependent>
<SSN>222222222</SSN>
<EESSN>111111111</EESSN>
</Dependent>
</Employee>
</Company>

最佳答案

你不需要深度复制任何东西;只需将 EESSN 元素分配给变量和 append它是依赖

XML 输入

<Company>
<Identifier>Benesolv</Identifier>
<Employee>
<EESSN>111111111</EESSN>
<Dependent>
<SSN>222222222</SSN>
</Dependent>
</Employee>
</Company>

Python代码

import xml.etree.ElementTree as ET

tree = ET.parse("input.xml")

for employee in tree.findall("Employee"):
eessn = employee.find("EESSN")
for dependent in employee.findall("Dependent"):
dependent.append(eessn)

tree.write("output.xml")

XML 输出

<Company>
<Identifier>Benesolv</Identifier>
<Employee>
<EESSN>111111111</EESSN>
<Dependent>
<SSN>222222222</SSN>
<EESSN>111111111</EESSN>
</Dependent>
</Employee>
</Company>

关于python - 如何在 Python 中深度复制 xml 子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54818326/

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