簡體   English   中英

Zeep 創建 xs:choice 元素

[英]Zeep create xs:choice element

我有ArrayOfVEHICLE類型的 wsdl :

<xs:complexType name="ArrayOfVEHICLE">
    <xs:sequence>
        <xs:choice maxOccurs="unbounded" minOccurs="0">
            <xs:element name="VEHICLE" nillable="true" type="tns:VEHICLE"/>
            <xs:element name="VEHICLEV2" nillable="true" type="tns:VEHICLEV2"/>
        </xs:choice>
    </xs:sequence>
</xs:complexType>

我正在嘗試使用 zeep 創建具有該類型的元素:

vehicle_v2_type = client.get_type("ns0:ArrayOfVEHICLE")
vehicle_v2 = vehicle_v2_type(VEHICLEV2={...})

我得到一個錯誤:

TypeError: {http://www.vsk.ru}ArrayOfVEHICLE() got an unexpected keyword argument 'VEHICLE2'. Signature: `({VEHICLE: {http://www.vsk.ru}VEHICLE} | {VEHICLEV2: {http://www.vsk.ru}VEHICLEV2})[]`

我嘗試過使用 zeep docs中的_value_1方法,如下所示:

vehicle_v2 = vehicle_v2_type(_value_1={"VEHICLEV2": {...}})

我得到另一個錯誤:

TypeError: No complete xsd:Sequence found for the xsd:Choice '_value_1'.
The signature is: ({VEHICLE: {http://www.vsk.ru}VEHICLE} | {VEHICLEV2: {http://www.vsk.ru}VEHICLEV2})[]

有人知道如何用 zeep 創建那個元素嗎?

好,我知道了。 我的 wsdl 說 choise 元素必須是列表,因為簽名:

<xs:choice maxOccurs="unbounded" minOccurs="0">

簡單的方法是使用 _value_1 創建嵌套列表,在我的情況下沒有工廠

client.service.SomeService(
    ...
    vehicles={  # Element with ArrayOfVEHICLE type
        "_value_1" : [
            {
                "VEHICLE2": {...}
            }
        ]
    }
)

希望這會幫助某人

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM