python-zeep
python-zeep copied to clipboard
Error parsing WSDL with mtom data
- Version: 3.4.0
- WSDL: local_repositoryservices.wsdl.zip
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'.
Hello, I have a similar problem. Any solutions to this?
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()
)