Suds似乎在解析以下XSD时遇到问题:
<element name="quantity" minOccurs="1" maxOccurs="1">
<annotation>
<documentation>Quantity of this item that's being ordered.</documentation>
</annotation>
<complexType>
<simpleContent>
<extension base="int">
<attribute name="unitOfMeasure" use="required">
<annotation>
<documentation>
Unit of measurement.
The attribute can have the
following values: PCS - pieces
SEC- seconds BYT - bytes KB -
kilobytes
</documentation>
</annotation>
<simpleType>
<restriction base="string">
<enumeration value="PCS" />
<enumeration value="SEC" />
<enumeration value="BYT" />
<enumeration value="KB" />
</restriction>
</simpleType>
</attribute>
</extension>
</simpleContent>
</complexType>
</element>
XML应该看起来像:
<ns0:quantity unitOfMeasure="PCS">1</ns:quantity>
可悲的是,我只能设置属性:
>>> c.factory.create('ns0:item.quantity')
(quantity){
_unitOfMeasure = ""
}
不可能设置XML节点的“文本”值。
我尝试按字面上创建XML:
element = Element('ns0:quantity')
element.setText("1")
element.set('unitOfMeasure', "PCS")
并将其作为参数传递。
这在调试日志记录中看起来不错(为
<ns0:quantity unitOfMeasure="PCS">1</ns0:quantity>
),但实际请求显示此值将序列化为:<ns0:quantity />
我在这里迷路了。
如何正确提交此值?
我正在用肥皂水0.4
最佳答案
刚刚找到一个临时解决方法。
suds-jurko也会出现此问题。
尽管suds.client中的漂亮格式日志显示了XML元素,suds.transport.http
中的原始日志记录显示“普通”输出未能序列化元素。
通过启用client.options.prettyxml = True
可以避免此问题。
关于python - 如何为suds Web服务对象设置“文本”值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27640853/