0

我有一个返回以下类型的 Web 服务:

<xsd:complexType name="TaggerResponse">
    <xsd:sequence>
        <xsd:element name="msg" type="xsd:string"></xsd:element>
    </xsd:sequence>
    <xsd:attribute name="status" type="tns:Status"></xsd:attribute>
</xsd:complexType>

该类型包含一个元素 ( msg) 和一个属性 ( status)。

为了与 Web 服务通信,我使用 SOAPpy 库。以下是 Web 服务(SOAP 消息)返回的示例结果:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
      <SOAP-ENV:TagResponse>
         <parameters status="2">
            <msg>text</msg>
         </parameters>
      </SOAP-ENV:TagResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Python 将此消息解析为:

<SOAPpy.Types.structType parameters at 157796908>: {'msg': 'text'}

如您所见,该属性已丢失。我应该怎么做才能获得“ status”的价值?

4

1 回答 1

1

您发布的响应示例(从 WS 请求返回的实际 XML)没有您要查找的值!我建议这就是为什么 SOAPpy 无法将其返回给您的原因。

如果在返回值和不返回值的情况下使您的代码具有一致的行为,请尝试使用dict'get()方法获取值:

attribute_value = result.get("attribute", None)

然后你可以测试结果是否没有。你也可以这样做:

if not "attribute" in result:
    ...handle case where there is no attribute value...
于 2009-07-27T14:15:21.847 回答