Python zeep / 在请求消息中包含一个 XML 模式
Python zeep / Include an XML Schema in a Request message
我需要集成到一些杂乱的 SOAP 端点以检索数据,并且卡在了生成请求消息的过程中。生成请求消息并与目标应用程序对话适用于大多数功能,但对于某些功能(如前所述:混乱)我需要包含一个 XML 模式作为请求消息中的元素。 XML 模式需要插入到定义为 xs:any 类型的元素中。
使用 python -mzeep 检查 wsdl 时,会显示以下输出(DataSet
是我需要将模式插入其中的元素):
ns1:FillDataSet(asID: xsd:string, asFromCompCode:, ..... , DataSet: {_value_1: ANY})
我没有找到在 Zeep 库中插入模式的方法(原因很明显,但我需要它 :( ),使用 xsd 或其他 类,有人可以帮忙吗我用这个?我想我需要单独实例化持有 XML 模式的任何对象,但不知道如何..
可以传递给 Any
字段的类型:
lxml.etree._Element
builtins.dict
zeep.xsd.valueobjects.AnyObject
使用第一个选项,您可以传递由 lxml 直接解析的任何内容(例如 etree.fromstring
)。
{'DataSet': lxml_elem1}
第二个选项应如下所示:{'_value_1': ANY[]}
,其中 ANY
是 lxml 元素或 AnyObject。它用于 python-zeep nested 类型
当您想使用 python-zeep 工厂构造对象并将其传递给任何类型的字段 (more details here) 时使用第三个选项。您可以在此处使用 Any() 作为基本类型,例如
{'DataSet': AnyObject(Any(), [lxml_elem1, lxml_elem2])
下面是等价的表达式:
{'DataSet': {'_value_1': [lxml_elem1, AnyObj2]}}
检查 any
元素定义中的 maxOccurs
,如果未设置(默认等于 1)- 只有列表中的第一个元素将用于 xml 生成
我需要集成到一些杂乱的 SOAP 端点以检索数据,并且卡在了生成请求消息的过程中。生成请求消息并与目标应用程序对话适用于大多数功能,但对于某些功能(如前所述:混乱)我需要包含一个 XML 模式作为请求消息中的元素。 XML 模式需要插入到定义为 xs:any 类型的元素中。
使用 python -mzeep 检查 wsdl 时,会显示以下输出(DataSet
是我需要将模式插入其中的元素):
ns1:FillDataSet(asID: xsd:string, asFromCompCode:, ..... , DataSet: {_value_1: ANY})
我没有找到在 Zeep 库中插入模式的方法(原因很明显,但我需要它 :( ),使用 xsd 或其他 类,有人可以帮忙吗我用这个?我想我需要单独实例化持有 XML 模式的任何对象,但不知道如何..
可以传递给 Any
字段的类型:
lxml.etree._Element
builtins.dict
zeep.xsd.valueobjects.AnyObject
使用第一个选项,您可以传递由 lxml 直接解析的任何内容(例如 etree.fromstring
)。
{'DataSet': lxml_elem1}
第二个选项应如下所示:{'_value_1': ANY[]}
,其中 ANY
是 lxml 元素或 AnyObject。它用于 python-zeep nested 类型
当您想使用 python-zeep 工厂构造对象并将其传递给任何类型的字段 (more details here) 时使用第三个选项。您可以在此处使用 Any() 作为基本类型,例如
{'DataSet': AnyObject(Any(), [lxml_elem1, lxml_elem2])
下面是等价的表达式:
{'DataSet': {'_value_1': [lxml_elem1, AnyObj2]}}
检查 any
元素定义中的 maxOccurs
,如果未设置(默认等于 1)- 只有列表中的第一个元素将用于 xml 生成