2013-02-20 5 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, как в Python: print ObjectXML.Body.Reason.Text Например, я хочу использовать точечную нотацию для путешествий внутри узлы. Как я это делаю ?.

Заранее спасибо.

ответ

1

Вы можете использовать cElement API, чтобы получить дескриптор XML-тегов с точки зрения объектов python, а затем использовать следующий рецепт 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/

Позвольте мне знать, если что-то неясно к вам.

Смежные вопросы