如何使用Python字典作为SOAP调用的xsd类型Map参数?

时间:2019-11-15 14:57:26

标签: python xml soap xsd zeep

我正在使用zeep通过Python中的WSDL与SOAP Web服务进行交互。

我想调用以下webservice方法:

AddStuff(someCheck: xsd:boolean, keyColumn: xsd:string, overwrite: xsd:boolean, attributes: ns0:Map)

xsd类型“ ns0:Map”如下:

ns0:Map(item: ns0:MapItem[])
ns0:MapItem(key: None, value: None)

以下是示例XML:

   <soapenv:Body>
      <sch:AddStuffRequest>
         <!--You may enter the following 4 items in any order-->
         <sch:someCheck>true</sch:someCheck>
         <sch:keyColumn>email</sch:keyColumn>
         <sch:overwrite>true</sch:overwrite>
         <sch:attributes>
            <!--Zero or more repetitions:-->
            <sch:item>
               <!--You may enter the following 2 items in any order-->
               <sch:key>email</sch:key>
               <sch:value>sample@sample.com</sch:value>
            </sch:item>
            <sch:item>
               <!--You may enter the following 2 items in any order-->
               <sch:key>gender</sch:key>
               <sch:value>0</sch:value>
            </sch:item>
            <sch:item>
               <!--You may enter the following 2 items in any order-->
               <sch:key>sometype</sch:key>
               <sch:value>0</sch:value>
            </sch:item>
            <sch:item>
               <!--You may enter the following 2 items in any order-->
               <sch:key>someName</sch:key>
               <sch:value>Peter</sch:value>
            </sch:item>
         </sch:attributes>
      </sch:AddSubscriberRequest>
   </soapenv:Body>

这是我要使用zeep构建的XML,但是我在使用attributes参数时遇到困难。

我的问题:如何将电子邮件,性别等值的Python字典传递给Web服务的attributes参数?由于涉及那些“项目”标签的结构,我无法使用:

client.create_message(
client.service, 'AddStuff', someCheck='true', keyColumn='email', overwrite='true', attributes={
"email":"someemail@d.com",
"gender":0,
...})

由于缺少SOAP正文中的“ item:”部分。

感谢您的帮助!

0 个答案:

没有答案