[英]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 或其他類,有人可以幫助我嗎?我想我需要實例化 any 對象分別持有 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 嵌套類型
當您想使用 python-zeep 工廠構造對象並將其傳遞給具有 Any 類型的字段時使用的第三個選項( 更多詳細信息在這里)。 您可以在這里使用 Any() 作為基本類型,例如
{'DataSet': AnyObject(Any(), [lxml_elem1, lxml_elem2])
下面是等價的表達式:
{'DataSet': {'_value_1': [lxml_elem1, AnyObj2]}}
檢查any
元素定義中的maxOccurs
,如果未設置(默認情況下等於 1) - 只有列表中的第一個元素將用於 xml 生成
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.