0

我收到了 SOAP 的回复:

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
 <env:Body>
  <env:Fault>
   <env:Code>
    <env:Value>env:Receiver</env:Value>
    <env:Subcode>
     <env:Value>-10</env:Value>
    </env:Subcode>
   </env:Code>
   <env:Reason>
    <env:Text xml:lang="en">10001069 - Item 804006 not active </env:Text>
   </env:Reason>
   <env:Detail>
    <Object xmlns="">17</Object>
    <ObjectIndex xmlns="">1</ObjectIndex>
    <Command xmlns="">AddObject</Command>
    <SessionID xmlns="">58711</SessionID>
   </env:Detail>
  </env:Fault>
 </env:Body>
</env:Envelope>

我想访问/知道 tag Reason,就像在 python 中一样:print ObjectXML.Body.Reason.Text 例如,我想在节点内使用点表示法。我是怎么做到的?

提前致谢。

4

1 回答 1

1

您可以使用 cElement API 根据 python 对象获取 XML 标记的句柄,然后使用以下 activestate 配方将 XML 转换为 dict 表示(仅推荐用于较小的 XML 文件,配方中的代码可能需要一些修改)。

import xml.etree.cElementTree as ElementTree
import XmlDictConfig as XmlDictConfig

if __name__ == "__main__":
  string_containing_my_xml = "read your XML into a string".
  root = ElementTree.parse(StringIO.StringIO(string_containing_my_xml)).getroot()
  xmldict = XmlDictConfig(root) // XmlDictConfig is available in activestate recipe.

http://code.activestate.com/recipes/410469-xml-as-dictionary/

如果您有任何不清楚的地方,请告诉我。

于 2013-02-20T10:43:41.963 回答