首页 > 解决方案 > 如何生成列表与zeep?

问题描述

我正在使用 Python 库zeep与 SOAP 服务通信。文档中所需的参数之一是类型List<String>,在 WSDL 中我发现了这一点:

<xs:element minOccurs="0" maxOccurs="1" name="IncludedLenders" type="tns:ArrayOfString"/>

我相信AraryOfString被定义为:

<xs:complexType name="ArrayOfString">
  <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

我如何让 zeep 为此生成值?我试过:

"IncludedLenders": [
  "BMS",
  "BME"
]

但这会产生:

                <ns0:IncludedLenders>
                    <ns0:string>BMS</ns0:string>
                </ns0:IncludedLenders>

代替:

                <ns0:IncludedLenders>
                    <ns0:string>BMS</ns0:string>
                    <ns0:string>BME</ns0:string>
                </ns0:IncludedLenders>

任何想法如何生成后者?

标签: pythonsoapzeep

解决方案


我想通了。首先我需要提取ArrayOfString类型:

array_of_string_type = client.get_type("ns1:ArrayOfString")

然后以这种方式创建它:

"IncludedLenders": array_of_string_type(["BMS","BME"])

推荐阅读