Я соединяясь с клиентом 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 самостоятельно.
<Сильного> Edit: STRONG> Я нашел способ, чтобы получить перечисления данных имени simpleType, как показано ниже, так что мои проблемы сужают к findingthe имени типа для данного переменного, при условии, что тип (х) возвращает мыльной пена. sax.text.Text вместо настоящего имени
for l in client.factory.create('FOOENUMERATION'):
print l[0]