2013-02-20 75 views
0

我從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 舉例來說,我想用點符號旅行內節點。 我該怎麼做?

在此先感謝。

回答

1

您可以使用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/

讓我知道,如果有不清楚的地方給你。