merging xml files using python's ElementTree

Although this is mostly a duplicate and the answer can be found here, I already did this so i can share this python code:

import os, os.path, sys
import glob
from xml.etree import ElementTree

def run(files):
    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 result in data.iter('results'):
            if xml_element_tree is None:
                xml_element_tree = data 
                insertion_point = xml_element_tree.findall("./results")[0]
            else:
                insertion_point.extend(result) 
    if xml_element_tree is not None:
        print ElementTree.tostring(xml_element_tree)

However this question contains another problem not present in the other post. The sample XML files are not valid XML so its not possible to have a XML tag with:

<sample="1">
    ...
</sample>

is not possible change to something like:

<sample id="1">
    ...
</sample>

Tags:

Python

Xml

Merge