python - 使用 Python SUDS 列出 SOAP 枚举的所有可能值

标签 python soap enumeration suds

我正在使用 SUDS 客户端连接到 SOAP 服务器,其 wsdl 包含许多如下枚举:

</simpleType>
  <simpleType name="FOOENUMERATION">
  <restriction base="xsd:string">
   <enumeration value="ALPHA"><!-- enum const = 0 -->
   <enumeration value="BETA"/><!-- enum const = 1 -->
   <enumeration value="GAMMA"/><!-- enum const = 2 -->
   <enumeration value="DELTA"/><!-- enum const = 3 -->
  </restriction>
</simpleType>

在我的客户端中,我收到包含这些不同枚举类型元素的序列。我的需要是给定一个成员变量,我需要知道所有可能的枚举值。基本上我需要一个函数,它采用这些枚举之一的实例并返回一个字符串列表,这些字符串是所有可能的值。

当我有一个实例时,运行:

print type(foo.enumInstance)

我得到:

<class 'suds.sax.text.Text'>

我不确定如何从中获取实际的 simpleType 名称,然后通过我自己解析 WSDL 的方式获取可能的值。

编辑:我发现了一种在给定 simpleType 名称的情况下获取枚举的方法,如下所示,因此我的问题缩小到找到给定变量的类型名称,给定类型 (x)返回 suds.sax.text.Text 而不是真实姓名

 for l in  client.factory.create('FOOENUMERATION'):
    print l[0]

最佳答案

如果您知道所需枚举的名称,您应该能够将 suds 提供给您的枚举对象视为字典,并使用该名称进行直接查找。例如,如果您的枚举类型称为 SOAPIPMode,并且您希望在该枚举中使用名为 STATIC_MANUAL 的枚举:

soapIPMode = client.factory.create('SOAPIPMode')
staticManual = soapIPMode['STATIC_MANUAL']

结果值的类型为 suds.sax.text.Text,其作用类似于字符串。

您还可以像遍历数组一样遍历枚举类型:

for i in range(len(soapIPMode):
    process(soapIPMode[i])

关于python - 使用 Python SUDS 列出 SOAP 枚举的所有可能值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027307/

相关文章:

java - 从 WSDL 生成的 JAXB POJO 使用起来似乎很麻烦

c# - 使用 C# 构造 SOAP 信封 XML

ios - 如何停止枚举 NSAttributedString 的属性?

python - 将pandas df写入excel时将选定的列类型更改为百分比

python - python中的迭代计数?

python - OpenCV 和 Python - 图像太大而无法显示

JAVA 嵌套哈希表与枚举

python - boolean 标识 == True vs 是 True

c - 如何在 ONVIF 中验证用户身份?

c# - 在枚举另一个集合的同时修改一个集合