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

时间:2019-02-22 00:35:17

标签: python xml element deep-copy

我对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>

1 个答案:

答案 0 :(得分:0)

您不需要对任何内容进行深度复制;只需将logDao.insertAll(testLog)元素分配给变量,然后将append分配给Thread.sleep(someMillisec)

XML输入

EESSN

Python

Dependent

XML输出

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