我必须将多个XML文件合并为一个。此外,新文件的结构是不同的。这是我" old"结构:
<a>
<b>
<c>1</c>
<c></c>
<c></c>
<c></c>
</b>
<b>
<c>1</c>
<c></c>
<c></c>
<c></c>
</b>
<b>
<c>2</c>
<c></c>
<c></c>
<c></c>
</b>
</a>
这应该是新的:
<a>
<1>
<b>
<c>1</c>
<c></c>
<c></c>
<c></c>
</b>
<b>
<c>1</c>
<c></c>
<c></c>
<c></c>
</b>
</1>
<2>
<b>
<c>2</c>
<c></c>
<c></c>
<c></c>
</b>
</2>
所以我需要一个可以复制b-Element及其孩子的功能。我不想为此使用for-Loops。或者这是正确的方法吗?
答案 0 :(得分:2)
你确定你真的需要副本吗?重组树是否足够?
import xml.etree.ElementTree as ET
list_of_files = ["tree1.xml", "tree2.xml", ...]
new_tree = ET.Element("a")
i = 1
for file in list_of_files:
original_tree = ET.parse(file)
sub_tree = ET.SubElement(new_tree, str(i))
i += 1
sub_tree.append (original_tree)
new_tree.write("merged_tree.xml")
答案 1 :(得分:0)
供将来参考。
复制节点(或树)并保留其子节点的最简单方法,无需为此导入另一个
import xml.etree.ElementTree;
def copy_tree( tree_root ):
return et.ElementTree( tree_root );
duplicated_node_tree = copy_tree ( node ); # type(duplicated_node_tree) is ElementTree
duplicated_tree_root_element = new_tree.getroot(); # type(duplicated_tree_root_element) is Element