Hi Jeff,
I am by no means a WSDL/XSD expert, but I think that Suds might be
introducing an extra level of indirection, although this can also be my
misinterpretation.
Definition of a complex type in the WSDL file:
<xsd:complexType abstract="true" name="APIResponse">
<xsd:sequence>
<xsd:element name="header" nillable="true"
type="types:APIResponseHeader"/>
</xsd:sequence>
<xsd:complexType name="GetCurrentBitsResp">
<xsd:complexContent>
<xsd:extension base="types:APIResponse">
<xsd:sequence>
<xsd:element name="bits" nillable="true"
type="types:ArrayOfBit"/>
<xsd:element name="errorCode" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ArrayOfBit">
<xsd:sequence>
<xsd:element form="qualified" maxOccurs="unbounded"
minOccurs="0"
name="Bit" nillable="true"
type="types:Bit"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Bit">
<xsd:sequence>
<xsd:element name="size" nillable="false"
type="xsd:double"/>
<xsd:element name="remaining" nillable="false"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
The returned XML looks like:
<n:Result xsi:type="n2:GetCurrentBitsResp">
<header xsi:type="n2:APIResponseHeader">
...
</header>
<bits xsi:type="n2:ArrayOfBit">
<n2:Bit xsi:type="n2:Bit">
<size xsi:type="xsd:double">1.02</size>
<remaining xsi:type="xsd:double">0.0</remaining>
</n2:Bit>
<n2:Bit xsi:type="n2:Bit">
<size xsi:type="xsd:double">5.03</size>
<remaining xsi:type="xsd:double">3.51</remaining>
</n2:Bit>
</bits>
<errorCode xsi:type="xsd:string">OK</errorCode>
</n:Result>
In the generated Python objects the ArrayofBit is accessible with:
- result.bits.Bit
When I would expect (seeing the XML) to access the array with:
- result.bits
Maybe you or any other with a better knowledge of WSDL and XSD could clarify
if this should be the case or not.
Best regards
Daniel