将ElementTree中的元素替换(将一个元素嵌套到并行的元素中)

2024-09-28 22:38:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将几个(现有的)XML元素<;b>;放入一个并行元素<;a>;,因此

<root>
    <a/>
    <b id="one"/>
    <b id="two"/>
</root>

变成

<root>
    <a>
        <b id="one"/>
        <b id="two"/>
    </a>
</root>

我试过这个:

findingA = root.find('a')
for b in root.findall('root/b'):
    findingA.append(b)
    root.remove(b)

但这些该死的<;b>;不会移动,芬德尔和iter也不会。你知道吗


Tags: inltgtid元素forrootxml
2条回答

您正在<root>元素下面搜索,但使用的路径“root/b”不匹配。for循环得到一个空列表,什么也不做。你知道吗


编辑:此解决方案仅适用于lxml中的ElementTree实现,移动行为不适用于其他情况,请参阅该情况下的其他答案。你知道吗

在lxml中,您不必删除元素b,追加并不复制元素。你知道吗

fA = root.find("a")
for b in root.findall("b"):
    fA.append(b)

root.findall()从“根”开始,请尝试以下操作:

findingA = root.find('a')
for b in root.findall('b'):
    findingA.append(b)
    root.remove(b)

相关问题 更多 >