解析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/
让我知道,如果有不清楚的地方给你。