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/

10-12 21:56