Skip to main content
 首页 » 编程设计

python之在 Python 中使用 Element Tree 合并 xml 文件

2025年05月04日11mate10pro

我正在尝试合并两个 xml 文件。这些文件包含相同的整体结构,但细节不同。

文件1.xml:

<book> 
    <chapter id="113"> 
        <sentence id="1"> 
            <word id="128160"> 
                <POS Tag="V"/> 
                <grammar type="STEM"/> 
                <Aspect type="IMPV"/> 
                <Number type="S"/> 
            </word> 
            <word id="128161"> 
                <POS Tag="V"/> 
                <grammar type="STEM"/> 
                <Aspect type="IMPF"/> 
            </word> 
             </sentence> 
             <sentence id="2"> 
            <word id="128162"> 
                <POS Tag="P"/> 
                <grammar type="PREFIX"/> 
                <Tag Tag="bi+"/> 
            </word> 
             </sentence> 
        </chapter> 
</book> 

文件2.xml:

<book> 
    <chapter id="113"> 
        <sentence id="1"> 
            <word id="128160"> 
            <concept English="joke"/> 
            </word> 
            <word id="128161"> 
                <concept English="romance"/> 
            </word> 
             </sentence> 
             <sentence id="2"> 
            <word id="128162"> 
                <concept English="happiness"/> 
            </word> 
             </sentence> 
        </chapter> 
</book> 

期望的输出是:

<book> 
    <chapter id="113"> 
        <sentence id="1"> 
            <word id="128160"> 
                    <concept English="joke"/> 
                    <POS Tag="V"/> 
                <grammar type="STEM"/> 
                <Aspect type="IMPV"/> 
                <Number type="S"/> 
            </word> 
            <word id="128161"> 
                <concept English="romance"/> 
                <POS Tag="V"/> 
                <grammar type="STEM"/> 
                <Aspect type="IMPF"/> 
            </word> 
             </sentence> 
             <sentence id="2"> 
            <word id="128162"> 
                <concept English="happiness"/> 
                <POS Tag="P"/> 
                <grammar type="PREFIX"/> 
                <Tag Tag="bi+"/> 
            </word> 
             </sentence> 
        </chapter> 
</book> 

好的,我尝试在路径中这样做,但没有得到所需的输出:

import os, os.path, sys 
import glob 
from xml.etree import ElementTree 
 
output = open('merge.xml','w') 
files="sample" 
xml_files = glob.glob(files +"/*.xml") 
xml_element_tree = None 
for xml_file in xml_files: 
        data = ElementTree.parse(xml_file).getroot() 
        # print ElementTree.tostring(data) 
        for word in data.iter('word'): 
            if xml_element_tree is None: 
                xml_element_tree = data  
                insertion_point = xml_element_tree.findall("book/chapter/sentence/word/*") 
            else: 
                insertion_point.extend(word)  
if xml_element_tree is not None: 
        print>>output, ElementTree.tostring(xml_element_tree) 

请帮忙

请您参考如下方法:

我过去做过类似的事情的一种方法是创建一个 xml 文档,然后附加您要查找的值。我不相信有办法“合并”它们

xml = ET.fromstring("<book></book>") 
document = ET.parse(tempFile) 
childNodeList = document.findall(xpathQuery) 
for node in childNodeList:  
   xml.append(node)