Python Zeep-XML标签缺少字符串类型的类型声明

时间:2018-10-16 10:30:11

标签: python api soap zeep

使用zeep时,以下代码:

string_type = client.get_type("xsd:string")
string_expression = string_type("my string value")

结果:

<ns1:Value>my string value</ns1:Value>

SOAP服务器上的序列化程序实际上是这样的:

<ns1:Value xsi:type="b:string" xmlns:b="http://www.w3.org/2001/XMLSchema">my string value</ns1:Value>

这种差异会导致SOAP服务器抛出异常:

  

zeep.exceptions.Fault:格式化程序在尝试时引发了异常   反序列化消息:尝试执行以下操作时出错   反序列化参数http://Services.IPWS/。的   InnerException消息为“来自命名空间的元素值   http://schemas.datacontract.org/   不能将子内容反序列化为对象。请用   XmlNode []反序列化这种XML模式。请参阅   InnerException,以获取更多详细信息。

如何使zeep保留类型声明在XML标记中?

1 个答案:

答案 0 :(得分:0)

我已经找到一种使zeep生成以下标记的方法,这是SOAP服务器期望的:

value = zeep.xsd.AnyObject(zeep.xsd.String(), "my string value")

结果是:

<ns1:Value xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">my string value</ns1:Value>