我要为项目使用SOAP API。 对于特定方法,我要发送复杂类型。
这种复杂类型的声明如下:
<complexType name="specialList">
<sequence>
<element name=data" minOccurs="0"maxOccurs="unbounded">
<complexType>
<simpleContent>
<extension base="string">
<attribute name="key" type="string" use="required"/>
</extension>
</simpleContent>
</complexType>
</element>
</sequence>
</complexType>
这是一个例子:
<my_action type="specialList">
<data key="myKey">MyValue</data>
<data key="myOtherKey">MyOtherValue</data>
</my_action>
要访问SOAP API,我使用zeep(我试过suds)。 我首先想到的是检索我的“specialList”。
special_list = client.get_type('ns1:specialList')
my_action = special_list(data=[data_1, data_2])
但是我对“数据”类型有疑问。确实没有声明这种类型的“数据”。我不能做client.get_type(“ns1:data”)。
我曾多次尝试创建一个简单的元素,但没有成功。 您是否知道如何创建这种“特殊”数据?
事先,谢谢。
西尔
答案 0 :(得分:1)
您可以尝试按照文档中的说明使用AnyObject:http://docs.python-zeep.org/en/master/datastructures.html
所以在你的代码中:
来自zeep import xsd
special_list = client.get_type('ns1:specialList')
my_action = xsd.AnyObject(special_list, special_list(data=[data_1, data_2]))