Всем доброго времени суток. Я разрабатываю клиента на python для SOAP сервиса на основе библиотеки SUDS. Вообщем возникла проблема:
Есть тип, который имеет такое определение:
<xs:element name="AppData" type="smev:AppDataType">
    <xs:annotation>
        <xs:documentation>Блок структурированных сведений</xs:documentation>
    </xs:annotation>
</xs:element>
<xs:complexType name="AppDataType">
    <xs:sequence>
        <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
У него есть родительский элемент MessageData.
<xs:element name="MessageData" type="smev:MessageDataType">
    <xs:annotation>
        <xs:documentation>Блок-обертка данных СМЭВ</xs:documentation>
    </xs:annotation>
</xs:element>
<xs:complexType name="MessageDataType">
    <xs:sequence>
        <xs:element ref="smev:AppData" minOccurs="0"/>
        <xs:element ref="smev:AppDocument" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>
Есть тип данных BirthFilterRequestObj, его описание не привожу, т.к. оно не важно.
message_data = client.factory.create("MessageData")
filter_ = client.factory.create("ns6:BirthFilterRequestObj")
message_data.AppData = filter_
Получаю следующее:
<ns0:MessageData>
    <ns0:AppData xsi:type="ns3:BirthFilterRequestObj">
    ...
    </ns0:AppData>
</ns0:MessageData>
Но блин, это не правильно, должно быть так:
<ns0:MessageData>
    <ns0:AppData>
        <ns3:BirthFilterRequestObj>
        </ns3:BirthFilterRequestObj>
    </ns0:AppData>
</ns0:MessageData>
Хорошо, делаю вот так:
message_data = client.factory.create("MessageData")
app_data = client.factory.create("AppData")
filter_ = client.factory.create("ns6:BirthFilterRequestObj")
app_data["ns3:BirthFilterRequestObj"] = filter_
message_data.AppData = app_data
Вот получаю такое:
<ns0:MessageData>
    <ns0:AppData>
        <ns0:BirthFilterRequestObj>
        </ns0:BirthFilterRequestObj>
    </ns0:AppData>
</ns0:MessageData>
Вопросы:
1) Скажите пожалуйста, как мне работать с типом any в SUDS?
2) Есть ли библиотеки для работы с SOAP в питон хорошие? Просто блин, что-то я замучался)
3) Помогите исправить ошибку…