gpt4 book ai didi

python - sud 中的属性和值

转载 作者:行者123 更新时间:2023-12-01 06:00:04 32 4
gpt4 key购买 nike

我在 wsdl 中的复杂类型方面遇到了一些麻烦。这是 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”设置属性名称,但如何设置值?

最佳答案

您必须创建不带属性的“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

希望这有帮助

关于python - sud 中的属性和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10894747/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com