Skip to content
Snippets Groups Projects
Commit 13aa1bd7 authored by Lukas Müller's avatar Lukas Müller
Browse files

Removed temp files

Former-commit-id: ce94fcbec0a4721c7e586a29ad67c6422a3c1f15
parent 95aa7228
No related branches found
No related tags found
No related merge requests found
Pipeline #192650 canceled
import os
import sys
from xml.etree import ElementTree as et
class hashabledict(dict):
def __hash__(self):
return hash(tuple(sorted(self.items())))
class XMLCombiner(object):
def __init__(self, filenames):
assert len(filenames) > 0, 'No filenames!'
# save all the roots, in order, to be processed later
self.roots = [et.parse(f).getroot() for f in filenames]
def combine(self):
for r in self.roots[1:]:
# combine each element with the first one, and update that
self.combine_element(self.roots[0], r)
# return the string representation
return et.ElementTree(self.roots[0])
def combine_element(self, one, other):
"""
This function recursively updates either the text or the children
of an element if another element is found in `one`, or adds it
from `other` if not found.
"""
# Create a mapping from tag name to element, as that's what we are fltering with
mapping = {(el.tag, hashabledict(el.attrib)): el for el in one}
for el in other:
if len(el) == 0:
# Not nested
try:
# Update the text
mapping[(el.tag, hashabledict(el.attrib))].text = el.text
except KeyError:
# An element with this name is not in the mapping
mapping[(el.tag, hashabledict(el.attrib))] = el
# Add it
one.append(el)
else:
try:
# Recursively process the element, and update it in the same way
self.combine_element(mapping[(el.tag, hashabledict(el.attrib))], el)
except KeyError:
# Not in the mapping
mapping[(el.tag, hashabledict(el.attrib))] = el
# Just add it
one.append(el)
if __name__ == '__main__':
sys.stdout.write('XML MERGER\n')
for file in sys.argv[1:]:
if file.endswith('.xml'):
sys.stdout.write('file: ' + file + '\n')
r = XMLCombiner(sys.argv[1:]).combine()
print '-'*20
print et.tostring(r.getroot())
r.write('Merger-output-loc.xml', encoding="iso-8859-1", xml_declaration=True)
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<map:mappings xmlns:map="http://www.rcenvironment.de/2015/mapping"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<map:mapping>
<map:source>/cpacs</map:source>
<map:target>/cpacs</map:target>
</map:mapping>
</map:mappings>
\ No newline at end of file
Workflow name: tu_delft_wing_design_converged-DOE-GS2017-06-20_17:41:13_39
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment