#!/usr/bin/python # -*- coding: utf-8 -*- from defs import * from reader import AXMLReader from parser import AXMLParser class AndroidManifest(): def __init__(self, data): self._buffer = "" reader = AXMLReader(data) parser = AXMLParser(reader) has_ns = False empty = False while 1 : tag = parser.next() if tag == START_DOCUMENT : self._buffer += '\n' elif tag == START_TAG: if empty: self._buffer += '>\n' self._buffer += ' ' * (parser._namespaces.getDepth() - 2) self._buffer += "<%s%s" % (parser.getTagPrefix(), parser.getTagName()) if not has_ns: self._buffer += ' xmlns:%s="%s"' % (parser.getNamespacePrefix(0), parser.getNamespaceUri(0)) has_ns = True for i in range(0, parser.countAttributes()): self._buffer += ' %s%s="%s"' % (parser.getAttribPrefix(i), parser.getAttribName(i), parser.getAttribValue(i)) empty = True elif tag == END_TAG: if empty: self._buffer += '/>\n' empty = False else: self._buffer += ' ' * (parser._namespaces.getDepth() - 2) self._buffer += "\n" % (parser.getTagPrefix(), parser.getTagName()) elif tag == TEXT: if empty: self._buffer += '>\n' empty = False self._buffer += ' ' * (parser._namespaces.getDepth() - 1) self._buffer += "%s\n" % parser.getText() elif tag == END_DOCUMENT : break else: break def getXML(self): """Provide the XML content.""" return self._buffer