我正在将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/

10-10 00:53
查看更多