[英]Python ElementTree Copy Node with childs
我必須將多個XML文件合並為一個。 此外,新文件的結構是不同的。 這是我的“舊”結構:
<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元素及其子元素的函數。 我不想為此使用for-Loops。 還是正確的方法?
您確定您確實需要副本嗎? 重新組織樹就足夠了嗎?
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")
備查。
復制節點(或樹),並保持它的孩子,而不必只導入另一個庫為最簡單的方法:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.