我有来自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>
我想访问/知道标记Reason
,就像在python中一样:print ObjectXML.Body.Reason.Text
例如,我想在节点内部使用点符号。
我是怎么做到的?。
提前致谢。
答案 0 :(得分: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/
如果您不清楚任何事情,请告诉我。