Python SUDS - 为MinOccurs和MaxOccurs值询问WSDL

时间:2012-02-29 14:10:10

标签: python web-services wsdl port suds

我想使用SUDS查询WSDL以获取Web服务的参数和属性。我最后还是要做这件事。如何查询服务以查找参数的minOccurs和maxOccurs值?

我看到suds.xsd.sxbase对象中有一个名为required的属性,但是,假设我的起点是客户端对象,我看不到要到达它的路径。

http://jortel.fedorapeople.org/suds/doc/suds.xsd.sxbase-pysrc.html#SchemaObject.required

client = Client(endpoint, username=username, password=password)
client.service[0][method]

如何确定参数是否被绑定?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在工厂解析器中查询该方法,并使用children()方法查看其参数。

示例,对于此方法,我有我的wsdl:

<complexType name="AddAuthorizationRoleRequestType">
   <sequence>
      <element name="_this" type="vim25:ManagedObjectReference" />
      <element name="name" type="xsd:string" />
      <element name="privIds" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
   </sequence>
</complexType>

我可以通过以下方式获取属性:

>>> a=client.factory.resolver.find("ns0:AddAuthorizationRoleRequestType")
>>> priv_el=a.children()[2][0]
<Element:0x107591a10 name="privIds" type="(u'string', u'http://www.w3.org/2001/XMLSchema')" />
>>> priv_el = a.children()[2][0]
>>> priv_el.max
unbounded
>>> priv_el.min
0

不是很优雅,但它有效