Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/xmlio.py
diff options
context:
space:
mode:
Diffstat (limited to 'xmlio.py')
-rwxr-xr-xxmlio.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/xmlio.py b/xmlio.py
new file mode 100755
index 0000000..86b3b9e
--- /dev/null
+++ b/xmlio.py
@@ -0,0 +1,56 @@
+#! /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)