#!/usr/bin/env python from sys import argv, stderr, exit ### XML ### etree = None try: from lxml import etree except ImportError: pass if not etree: try: # Python 2.5 ElementTree from xml.etree import ElementTree as etree except ImportError, err: pass if not etree: try: # Python 2.4 cElementTree import cElementTree as etree except ImportError: pass if not etree: try: # Python 2.4 ElementTree from elementtree import ElementTree as etree except ImportError: pass if not etree: raise ImportError("Cannot import an elementtree-compliant xml "+ "library. Please install one of those "+ "libraries (by order of recommendation) : "+ "(1) lxml, (2) cElementTree or (3) ElementTree") def indent(elem, level=0, spaces=u' '*3): newline = u"\n" + spaces * level if len(elem): if not elem.text or not elem.text.strip(): elem.text = newline + spaces for elem in elem: indent(elem, level+1) if not elem.tail or not elem.tail.strip(): elem.tail = newline else: if level and (not elem.tail or not elem.tail.strip()): elem.tail = newline ### XML ### def removeDescSort(descsorts): count = 0 return count def cleanupDoc(doc): removed_desc = 0 for descs in doc.getroot().getiterator('descs'): for desc in descs.getiterator('desc'): descs.remove(desc) removed_desc += 1 print "%s <desc> removed" % removed_desc removed_descsort = 0 for descsorts in doc.getroot().getiterator('descsorts'): for descsort in descsorts.getiterator('descsort'): descsorts.remove(descsort) removed_descsort += 1 print "%s <descsort> removed" % removed_descsort def main(): if len(argv) != 3: print >>stderr, "usage: %s acls.xml newacls.xml" % argv[0] exit(1) input_filename = argv[1] output_filename = argv[2] if input_filename == output_filename: print >>stderr, "input and output filenames are identical (%s)" % input_filename print >>stderr, "Use different names!" exit(1) doc = etree.parse(input_filename) cleanupDoc(doc) out = open(output_filename, 'w') doc.write(out) out.close() print "Conversion done: %s" % output_filename exit(0) if __name__ == "__main__": main()