在ElementTree中移位元素(将元素嵌套到并行元素中)

时间:2017-06-16 05:46:15

标签: python xml elementtree

我正在尝试放置几个(现有的)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)

但是这些该死的&lt; b&gt;不管怎么说都不会动起来。

2 个答案:

答案 0 :(得分:0)

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

编辑:此解决方案仅适用于lxml中的ElementTree实现,移动行为不适用于其他情况,在这种情况下请参考其他答案。

在lxml中,您不必删除元素b,追加不会复制元素。

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

答案 1 :(得分:0)

root.findall()从'root'开始,试试这个:

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