def parse_xml(data, encoding="utf-8", dump_invalid_data=False): try: p = ET.XMLParser(encoding=encoding) except exceptions.TypeError: p = ET.XMLParser() # my version of twisted.web returns page_infos as a dictionary in # the second item of the data list if isinstance(data, (list, tuple)): data, _ = data try: data = data.encode(encoding) except UnicodeDecodeError: pass # Guess from who we're getting this? data = data.replace('\x00', '') try: p.feed(data) except Exception, error: if dump_invalid_data: print error, repr(data) p.close() raise Exception, error
def initfromfile(self): filename = botslib.abspathdata(self.ta_info['filename']) self.ta_info['attributemarker'] = '__' parser = ET.XMLParser() etree = ET.ElementTree() #ElementTree: lexes, parses, makes etree; etree is quite similar to bots-node trees but conversion is needed etreeroot = etree.parse(filename, parser) self.root = self._etree2botstree(etreeroot) #convert etree to bots-nodes-tree