python-zeep icon indicating copy to clipboard operation
python-zeep copied to clipboard

Error parsing WSDL with mtom data

Open Drev10 opened this issue 5 years ago • 2 comments

Script:

from zeep import Client, Settings

settings = Settings(strict=False, raw_response=True, xml_huge_tree=True)
wsdl = "local_repositoryservices.wsdl"
# print(settings)
client = Client(wsdl, settings=settings)

Error:

Traceback (most recent call last):
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/schema.py", line 249, in _get_instance
    for schema in self._get_schema_documents(qname.namespace):
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/schema.py", line 314, in _get_schema_documents
    return self.documents.get_by_namespace(namespace, fail_silently)
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/schema.py", line 350, in get_by_namespace
    "No schema available for the namespace %r" % namespace
zeep.exceptions.NamespaceError: No schema available for the namespace 'http://www.w3.org/2005/05/xmlmime'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/dre/PycharmProjects/zeep_tester/wsdl_processer.py", line 7, in <module>
    client = Client(wsdl, settings=settings)
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/client.py", line 68, in __init__
    self.wsdl = Document(wsdl, self.transport, settings=self.settings)
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/wsdl/wsdl.py", line 82, in __init__
    root_definitions = Definition(self, document, self.location)
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/wsdl/wsdl.py", line 184, in __init__
    self.parse_types(doc)
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/wsdl/wsdl.py", line 316, in parse_types
    self.types.add_documents(schema_nodes, self.location)
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/schema.py", line 117, in add_documents
    document.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/schema.py", line 479, in resolve
    _resolve_dict(self._elements)
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/schema.py", line 460, in _resolve_dict
    new = obj.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/elements/element.py", line 301, in resolve
    self.resolve_type()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/elements/element.py", line 298, in resolve_type
    self.type = self.type.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/types/complex.py", line 361, in resolve
    self._element = self._element.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/elements/indicators.py", line 213, in resolve
    self[i] = elm.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/elements/element.py", line 301, in resolve
    self.resolve_type()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/elements/element.py", line 298, in resolve_type
    self.type = self.type.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/types/unresolved.py", line 23, in resolve
    return retval.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/types/complex.py", line 361, in resolve
    self._element = self._element.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/elements/indicators.py", line 213, in resolve
    self[i] = elm.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/elements/element.py", line 301, in resolve
    self.resolve_type()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/elements/element.py", line 298, in resolve_type
    self.type = self.type.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/types/unresolved.py", line 23, in resolve
    return retval.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/types/complex.py", line 345, in resolve
    value = attribute.resolve()
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/elements/references.py", line 36, in resolve
    attrib = self._schema.get_attribute(self._ref)
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/schema.py", line 166, in get_attribute
    return self._get_instance(qname, "get_attribute", "attribute")
  File "/Users/dre/PycharmProjects/zeep_tester/venv/lib/python3.7/site-packages/zeep/xsd/schema.py", line 265, in _get_instance
    % (name, qname.text, qname.namespace)
zeep.exceptions.NamespaceError: Unable to resolve attribute {http://www.w3.org/2005/05/xmlmime}contentType. No schema available for the namespace 'http://www.w3.org/2005/05/xmlmime'.

Drev10 avatar Mar 05 '20 21:03 Drev10

Hello, I have a similar problem. Any solutions to this?

OrWestSide avatar Mar 26 '20 13:03 OrWestSide

I have a solution that worked for me is caching the xml_mime, but still don't like this solution. xml_mime_type.return_xml_mime() -> return xml schema from functions

xml_mime_type.return_xml_mime()
"""
 :return: xml mime
"""
return b'''<?xml version="1.0" ?>
        <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                   xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
                   targetNamespace="http://www.w3.org/2005/05/xmlmime" >
          <xs:attribute name="contentType">
            <xs:simpleType>
              <xs:restriction base="xs:string" >
              <xs:minLength value="3" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="expectedContentTypes" type="xs:string" />
          <xs:complexType name="base64Binary" >
            <xs:simpleContent>
                <xs:extension base="xs:base64Binary" >
                    <xs:attribute ref="xmime:contentType" />
                </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
          <xs:complexType name="hexBinary" >
            <xs:simpleContent>
                <xs:extension base="xs:hexBinary" >
                    <xs:attribute ref="xmime:contentType" />
                </xs:extension>
            </xs:simpleContent>
          </xs:complexType> 
        </xs:schema>'''`
cache = SqliteCache(path='path_where_to_create_cache', timeout=None)
cache.add(
    "https://www.w3.org/2005/05/xmlmime", xml_mime_type.return_xml_mime()
)
cache.add(
    "http://www.w3.org/2005/05/xmlmime", xml_mime_type.return_xml_mime()
)

mdragoss avatar Dec 04 '23 12:12 mdragoss