如何在Python 3.2中导入.xsd或.wsdl文件

3 投票
2 回答
2480 浏览
提问于 2025-04-17 11:10

我刚开始学习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,快速搜索了一下也没有找到有用的信息。

撰写回答