如何在Python 3.2中导入.xsd或.wsdl文件
我刚开始学习Python,现在正在把一些代码从2.7版本转换到3.2版本,使用了2to3这个工具。可是,有一件事情这个工具没法解决,就是导入.xsd或.wsdl文件。在2.7版本中,像import content
这样的代码(这里的content是我们目录中的.xsd文件)运行得很好,但在3.2版本中却无法找到这个导入。有没有人知道我该怎么做呢?
谢谢!
2 个回答
1
2018年的更新:
请使用 python-zeep,而不是 suds
。因为 python-zeep 得到了很好的支持,并且正在积极开发中。而 suds 则没有这样的支持。此外,python-zeep 的速度也比 suds 快得多。
以下是一个示例,来自 文档:
client = Client('http://www.webservicex.net/ConvertSpeed.asmx?WSDL')
result = client.service.ConvertSpeed(
100, 'kilometersPerhour', 'milesPerhour')
3
听起来你是在使用代码生成器处理你的 .xsd
和 .wsdl
文件,对吧?
如果不是的话,我有点搞不懂你说的“无法导入 .xsd
文件”是什么意思;我觉得Python的导入工具链不支持这样做,除非你为SOAP客户端专门写一个新的导入器。
我最近需要和一个SOAP服务进行通信,最后选择了suds这个库。
suds中的 Client
对象需要一个wsdl文件的url(我需要修改这个url,使用 file://
来指定一个本地的 .wsdl 文件)
from suds.client import Client
a = Client(<url_to_wsdl_file>)
a.service.Method()
希望这对你有帮助!我不确定suds是否支持Python 3,快速搜索了一下也没有找到有用的信息。