我正在尝试将一组节点移动为不同元素的子节点。
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
产生