1

wsdlのcomplextypeに問題があります。ここにwsdlの一部があります:

<xs:element name="Params" nillable="true">                   
    <xs:complexType>                                                                       
        <xs:sequence>                                                                      
            <xs:element name="Param" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>                             
                    <xs:simpleContent>                       
                        <xs:extension base="xs:string">      
                            <xs:attribute name="name" type="xs:string"/>
                        </xs:extension>                      
                    </xs:simpleContent>                      
                </xs:complexType>                            
            </xs:element>                                                                  
        </xs:sequence>                                                                     
    </xs:complexType>                                                                      
</xs:element>

SOAP-reqの結果フィールドは次のようになっている必要があります。

<ns0:Params>
    <ns0:Param ns1:name="name1">val1</ns1:Param>
    <ns0:Param ns1:name="name1">val1</ns1:Param>
</ns0:Params>

泡は私に次のタイプを与えます:

>>> client.factory.create("Payment.Params.Param")  
(Param){  
    _name = ""  
}

_nameを設定すると、sudsはXMLを生成します。

<ns0:Params>
    <ns0:Param name="name1"/>
    <ns0:Param name="name2"/>
</ns0:Params>

では、「Param」の属性名を設定することはできますが、どうすれば値を設定できますか?

4

1 に答える 1

2

属性なしで「Param」要素を作成してから、マーシャルプラグインを使用して「name」属性を追加する必要があります。

# disclaimer: not tested!
from suds.plugin import MessagePlugin

class MyPlugin(MessagePlugin):
    def marshalled(self, context):
        body = context.envelope.getChild('Body')
        params = body.getChild('fix_this_path').getChild('Params')  
        foo = params[0]
        foo.set('name', 'name1')

client = Client(url, plugins=[MyPlugin()])
...
params = client.factory.create("Payment.Params")
params.param = "val1"

詳細はこちら:https ://fedorahosted.org/suds/wiki/Documentation#MessagePlugin

お役に立てれば

于 2012-07-29T11:51:51.207 に答える