解析XML信封在Python

解析XML信封在Python

问题描述:

我从SOAP这样的响应:解析XML信封在Python

<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> 

我想访问/知道标签Reason,像蟒蛇:print ObjectXML.Body.Reason.Text 举例来说,我想用点符号旅行内节点。 我该怎么做?

在此先感谢。

您可以使用cElement API根据python对象获取XML标签的句柄,然后使用以下活动状态配方将XML转换为字典表示(仅适用于较小的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/

让我知道,如果有不清楚的地方给你。