#! /usr/bin/env python # -*- coding: utf-8 -*- # reads and writes xml files # output files indented import xml.etree.ElementTree as ET #tree = Xmlio(path) #elem = tree.getroot() #tree.save(path) --- uses root of tree #tree.save(path,root=elem) -- saves tree from supplied root element class Xmlio(): def __init__(self, path = None, root = None): print 'params: path=', path, 'root=', root if root: if path: self.root = root self.tree = ET.ElementTree(self.root) else: self.root = ET.Element(root) self.tree = ET.ElementTree(self.root) else: try: self.tree = ET.parse(path) except: print "error parsing xml file", path return self.root = self.tree.getroot() def getroot(self, root = ''): if not root: return self.root else: return ET.Element(root) def indent(self, elem, level=0): i = "\n" + level * " " if len(elem): if not elem.text or not elem.text.strip(): elem.text = i + " " for elem in elem: self.indent(elem, level+1) if not elem.tail or not elem.tail.strip(): elem.tail = i else: if level and (not elem.tail or not elem.tail.strip()): elem.tail = i def save(self, path, root = ''): if not root: root = self.root self.indent(root) #prettyprint ET.ElementTree(root).write(path)