Elementtree如何使用append移动xml节点?

时间:2015-11-16 19:50:07

标签: python xml elementtree

我正在尝试将一组节点移动为不同元素的子节点。

SampleFile.xml

<root>
    <OuterNode>
        <Node>
            <Name>NodeA</Name>
        </Node>
        <Node>
            <Name>NodeB</Name>
        </Node>
        <SpecialNode>
            <Name>NodeZ</Name>
        </SpecialNode>
    </OuterNode>
</root>

使用此代码,我只能移动第一个“节点”

import xml.etree.ElemntTree as etree


tree = etree.parse('sampleFile.xml')
root = tree.getroot()

next_node = etree.Element('NextOuterNode')
root.append(next_node)

for parent in root:
    if parent.tag == 'OuterNode':
        for child in parent:
            if child.tag == 'Node':
                parent.remove(child)
                next_node.append(child)

在摸索了一会儿后,我发现这会移动两个节点

outer_node = tree.find('./OuterNode')
for e in tree.findall('./OuterNode/Node'):
    next_node.append(e)
    outer_node.remove(e)

所以我的问题是可迭代列表的区别是什么

for child in parent

for e in tree.findall

产生

0 个答案:

没有答案