2

我必须将多个 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。或者这是正确的方法?

4

2 回答 2

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")
于 2013-05-07T14:55:55.073 回答
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
于 2014-12-08T17:12:05.773 回答