def parseDTDString(data, path): result = [] currentComment = [None] parser = ParserCreate() parser.UseForeignDTD(True) parser.SetParamEntityParsing(XML_PARAM_ENTITY_PARSING_ALWAYS) def ExternalEntityRefHandler(context, base, systemId, publicId): subparser = parser.ExternalEntityParserCreate(context, 'utf-8') subparser.Parse(data.encode('utf-8'), True) return 1 def CommentHandler(data): currentComment[0] = data.strip() def EntityDeclHandler(entityName, is_parameter_entity, value, base, systemId, publicId, notationName): result.append((unescapeEntity(entityName), currentComment[0], unescapeEntity(value.strip()))) currentComment[0] = None parser.ExternalEntityRefHandler = ExternalEntityRefHandler parser.CommentHandler = CommentHandler parser.EntityDeclHandler = EntityDeclHandler parser.Parse('<!DOCTYPE root SYSTEM "foo"><root/>', True) for entry in result: yield entry
def parseDTDString(data, path): result = [] currentComment = [None] parser = ParserCreate() parser.UseForeignDTD(True) parser.SetParamEntityParsing(XML_PARAM_ENTITY_PARSING_ALWAYS) def ExternalEntityRefHandler(context, base, systemId, publicId): subparser = parser.ExternalEntityParserCreate(context, 'utf-8') subparser.Parse(data.encode('utf-8'), True) return 1 def CommentHandler(data): currentComment[0] = data.strip() def EntityDeclHandler(entityName, is_parameter_entity, value, base, systemId, publicId, notationName): result.append((unescapeEntity(entityName), currentComment[0], unescapeEntity(value.strip()))) currentComment[0] = None parser.ExternalEntityRefHandler = ExternalEntityRefHandler parser.CommentHandler = CommentHandler parser.EntityDeclHandler = EntityDeclHandler parser.Parse('<!DOCTYPE root SYSTEM "foo"><root/>', True) for entry in result: yield entry
def getXmlInfo(self): print '[PrestigesatEditor] trying to get the XML declaration and comment' parser = ParserCreate() parser.XmlDeclHandler = self.declarationHandler parser.CommentHandler = self.commentHandler satFile = open(TMPFILE, 'r') parser.ParseFile(satFile) satFile.close()
def handle_namespaces(self, parser): """Do not check namespaces for grammars used by ns-specific tools.""" if Language.get_language(self.file_name) in self.non_ns_types: xparser = ParserCreate() xparser.DefaultHandlerExpand = parser._default xparser.StartElementHandler = parser._start xparser.EndElementHandler = parser._end xparser.CharacterDataHandler = parser._data xparser.CommentHandler = parser._comment xparser.ProcessingInstructionHandler = parser._pi # Set the etree parser to use the expat non-ns parser. parser.parser = parser._parser = xparser
def handle_namespaces(self, parser): """Do not check namespaces for grammars used by ns-specific tools.""" if Language.get_language(self.file_name) in self.non_ns_types: xparser = ParserCreate() xparser.DefaultHandlerExpand = parser._default xparser.StartElementHandler = parser._start xparser.EndElementHandler = parser._end xparser.CharacterDataHandler = parser._data xparser.CommentHandler = parser._comment xparser.ProcessingInstructionHandler = parser._pi # Set the etree parser to use the expat non-ns parser. parser.parser = parser._parser = xparser
def parse(cls, fname: Text) -> 'FMXml': """parse Nodes from xml. """ ret = FMXml() parser = ParserCreate() parser.StartElementHandler = ret.enter_tag parser.EndElementHandler = ret.leave_tag parser.CharacterDataHandler = ret.enter_chars parser.CommentHandler = ret.enter_comment with open(fname, "rb") as fp: parser.ParseFile(fp) return ret
def parse(self, filename): self.secrets_file = open('parts/_actual_secrets.txt', 'wb') self.mock_secrets_file = open('parts/_example_secrets.txt', 'wb') parser = ParserCreate() parser.CommentHandler = self.commentHandler parser.StartElementHandler = self.startElement parser.EndElementHandler = self.endElement parser.CharacterDataHandler = self.characters parser.StartCdataSectionHandler = self.startCDATA parser.EndCdataSectionHandler = self.endCDATA saxutils.XMLGenerator(out=self.master_header).startDocument() self.master_header.write(b'<!DOCTYPE erddapDatasets [\n') self.master_header.write( b'<!ENTITY % secrets SYSTEM "_secrets.txt">\n') self.master_header.write(b'%secrets;\n') parser.ParseFile(open(filename, "rb")) self.master_header.write(b']>\n') self.master_header.write(self.out_file.master_file.getvalue()) with open("parts/_datasets.xml", "wb") as f: f.write(self.master_header.getvalue()) self.secrets_file.close() self.mock_secrets_file.close()