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