def parse_xml(content, transport, base_url=None): parser = etree.XMLParser(remove_comments=True, resolve_entities=False) parser.resolvers.add(ImportResolver(transport)) try: return fromstring(content, parser=parser, base_url=base_url) except etree.XMLSyntaxError as exc: raise XMLSyntaxError("Invalid XML content received (%s)" % exc.message)
def parse_xml(content, transport, base_url=None, settings=None): """Parse an XML string and return the root Element. :param content: The XML string :type content: str :param transport: The transport instance to load imported documents :type transport: zeep.transports.Transport :param base_url: The base url of the document, used to make relative lookups absolute. :type base_url: str :param settings: A zeep.settings.Settings object containing parse settings. :type settings: zeep.settings.Settings :returns: The document root :rtype: lxml.etree._Element """ settings = settings or Settings() recover = not settings.strict parser = etree.XMLParser(remove_comments=True, resolve_entities=False, recover=recover, huge_tree=settings.xml_huge_tree) parser.resolvers.add(ImportResolver(transport)) try: return fromstring(content, parser=parser, base_url=base_url, forbid_dtd=settings.forbid_dtd, forbid_entities=settings.forbid_entities) except etree.XMLSyntaxError as exc: raise XMLSyntaxError("Invalid XML content received (%s)" % exc.msg, content=content)
def parse_xml(content, transport, base_url=None, strict=True, xml_huge_tree=False): """Parse an XML string and return the root Element. :param content: The XML string :type content: str :param transport: The transport instance to load imported documents :type transport: zeep.transports.Transport :param base_url: The base url of the document, used to make relative lookups absolute. :type base_url: str :param strict: boolean to indicate if the lxml should be parsed a 'strict'. If false then the recover mode is enabled which tries to parse invalid XML as best as it can. :param xml_huge_tree: boolean to indicate if lxml should process very large XML content. :type strict: boolean :returns: The document root :rtype: lxml.etree._Element """ recover = not strict parser = etree.XMLParser(remove_comments=True, resolve_entities=False, recover=recover, huge_tree=xml_huge_tree) parser.resolvers.add(ImportResolver(transport)) try: return fromstring(content, parser=parser, base_url=base_url) except etree.XMLSyntaxError as exc: raise XMLSyntaxError("Invalid XML content received (%s)" % exc.msg, content=content)
def parse_xml(content, base_url=None, recover=False): parser = etree.XMLParser(remove_comments=True, recover=recover, resolve_entities=False) try: return fromstring(content, parser=parser, base_url=base_url) except etree.XMLSyntaxError as exc: raise XMLSyntaxError("Invalid XML content received (%s)" % exc)
def process_reply(self, envelope): envelope_qname = etree.QName(self.nsmap['soap-env'], 'Envelope') if envelope.tag != envelope_qname: raise XMLSyntaxError( ("The XML returned by the server does not contain a valid " + "{%s}Envelope root element. The root element found is %s ") % (envelope_qname.namespace, envelope.tag)) return self.output.deserialize(envelope)
def process_reply(self, envelope): envelope_qname = etree.QName(self.nsmap['soap-env'], 'Envelope') if envelope.tag != envelope_qname: raise XMLSyntaxError(( "The XML returned by the server does not contain a valid " + "{%s}Envelope root element. The root element found is %s " ) % (envelope_qname.namespace, envelope.tag)) body = envelope.find('soap-env:Body', namespaces=self.nsmap) assert body is not None, "No {%s}Body element found" % (self.nsmap['soap-env']) return self.output.deserialize(body)
def parse_xml(content, transport, base_url=None): parser = etree.XMLParser(remove_comments=True) try: return fromstring(content, parser=parser, base_url=base_url) except etree.XMLSyntaxError as exc: raise XMLSyntaxError("Invalid XML content received (%s)" % exc.message)