def inject(path, additions, outpath): from giscanner.girparser import GIRParser from giscanner.girwriter import GIRWriter from xml.etree.cElementTree import parse tree = parse(path) root = tree.getroot() injectDoc = parse(open(additions)) for node in injectDoc.getroot(): injectPath = node.attrib['path'] target = myxpath(root, injectPath) if not target: raise ValueError("Couldn't find path %r" % (injectPath, )) for child in node: target.append(child) parser = GIRParser() parser.parse_tree(tree) writer = GIRWriter(parser.get_namespace(), parser.get_shared_libraries(), parser.get_includes()) outf = open(outpath, 'w') outf.write(writer.get_xml()) outf.close() return 0
def typelib_xml_strip(path): from giscanner.girparser import GIRParser from giscanner.girwriter import GIRWriter from giscanner.girparser import C_NS from xml.etree.cElementTree import parse c_ns_key = '{%s}' % (C_NS, ) tree = parse(path) root = tree.getroot() for node in root.getiterator(): for attrib in list(node.attrib): if attrib.startswith(c_ns_key): del node.attrib[attrib] parser = GIRParser() parser.parse_tree(tree) writer = GIRWriter(parser.get_namespace(), parser.get_shared_libraries(), parser.get_includes()) sys.stdout.write(writer.get_xml()) return 0