SUDS クライアントを使用して、wsdl に次のような多くの列挙が含まれている SOAP サーバーに接続しています。
</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 名を指定して列挙を取得する方法を発見しました。本名
for l in client.factory.create('FOOENUMERATION'):
print l[0]