Я использую zeep
для обработки некоторых запросов SOAP в Python, и я столкнулся с ситуацией, для которой я не смог найти никакой документации (ни здесь, ни на SO, ни на их официальные документы ).
Сначала я создал factory
:
factory = client.type_factory('ns0')
Некоторые атрибуты этого factory
выглядят так:
In [76]: factory.IctAdditionalInfos()
Out[76]:
{
'item': []
}
Внутри item
У меня могут быть следующие данные:
In [79]: factory.IctAdditionalInfos(item={})
Out[79]:
{
'item': {
'PersonId': None,
'PersonIdExt': None,
'Sex': None,
'FirstName': None,
'LastName': None,
'Telephone': None,
'MobilePhone': None,
'Fax': None,
'Email': None
}
}
Теперь, что я хочу, и я не мог разобраться, это:
при попытке построить и вернуть XML вместо отправки его на сервер с помощью
client.create_message(service, wsdl_interface_name, **self.data)
(self.data
содержит IctAdditionalInfos
) и когда factory.IctAdditionalInfos
не содержит никаких данных в item
, я хотел бы получить:
<IctAdditionalInfos></IctAdditionalInfos>
или
<IctAdditionalInfos/>
Вместо вышеупомянутого я получаю:
<IctAdditionalInfos>
<item/>
</IctAdditionalInfos>
потому что item
является обязательным.
Определение wsdl IctIncidentAdditionalInfos
выглядит следующим образом:
<xsd:complexType name="IctIncidentAdditionalInfos">
<xsd:sequence>
<xsd:element name="item" type="IctIncidentAdditionalInfo" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
Как мне добиться этого, используя zeep
?