Hey Dennis,
Sorry for the slow reply. Been busy :)
See below:
On 05/03/2010 01:32 PM, Dennis Tomas wrote:
Hello,
I have a general question about suds, which I couldn't answer by reading
the suds documentation. Suppose there are the following types in a wsdl:
<xs:complexType name="ParamType">
<xs:simpleContent>
<xs:extension base="xs:anySimpleType">
<xs:attribute name="n" type="xs:token"
use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="ParamListType">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0"
name="P"
type="xx:ParamType"/>
</xs:sequence>
</xs:complexType>
and there is a method doSomething(ParamListType Params), which I want to
call so that the resulting SOAP request would look like this:
<SOAP-ENV:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<DoSomethingRequest xmlns="...">
<Params>
<P n="foo">bar</P>
</Params>
</DoSomethingRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Now what is the correct object represention for element "P" with
attribute n="foo" and text "bar"? I hope I'm not missing
something very
obvious here...
This is kind of obscure because it's rare. The suds.sudsobject.Property class is for
mixed content. You can create as:
from suds.sudsobject import Property
p = Property('bar')
p._n = 'foo' # <-- attribute
Or, using the factory:
p = client.factory.craete('ParamType')
p.value = 'bar'
p._n = 'foo'
The factory will see that it is a mixed element and create a property.
The marshaller knows to marshal Property objects as:
<P n="foo">bar</P>
Regards,
Dennis
_______________________________________________
suds mailing list
suds(a)lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/suds