2014-05-20 2 views
0

이것이 xml 결과를 사전으로 변환하는 최선의 방법인지 확실하지 않습니다. 그렇게하는 것 외에 dict로 변환하는 적절한 방법이 있습니까? HTTP 요청 결과에서xml을 사전으로 변환하는 올바른 방법

XML :

[('test', 'Upload this for our robot.'), {'date_to_go': '1990'}, {'role': 'Survivor'}, {'status': 'living'}, {'user': 'John Connor'}] 
:

<Values version="2.0"> 
    <value name="configuration">test</value> 
    <array name="configurationList" type="value" depth="1"> 
    <value>test</value> 
    </array> 
    <value name="comment">Upload this for our robot.</value> 
    <array name="propertiesTable" type="record" depth="1"> 
    <record javaclass="com.wm.util.Values"> 
     <value name="name">date_to_go</value> 
     <value name="value">1990</value> 
    </record> 
    <record javaclass="com.wm.util.Values"> 
     <value name="name">role</value> 
     <value name="value">Survivor</value> 
    </record> 
    <record javaclass="com.wm.util.Values"> 
     <value name="name">status</value> 
     <value name="value">living</value> 
    </record> 
    <record javaclass="com.wm.util.Values"> 
     <value name="name">user</value> 
     <value name="value">John&amp;nbsp;Connor</value> 
    </record> 
    </array> 
    <null name="propertiesList"/> 
</Values> 

코드

from xml.etree import ElementTree 

tree = ElementTree.fromstring(xml) 
mom = [] 
mim = [] 
configuration = tree.find('value[@name="configuration"]').text 
comment = tree.find('value[@name="comment"]').text 
prop = (configuration, comment) 
mom.append(prop) 

for records in tree.findall('./array/record'): 
    me = [] 
    for child in records.iter('value'): 
     me.append(child.text) 
    mim.append(me) 

for key, value in mim: 
    mi_dict = dict() 
    mi_dict[key] = value 
    mom.append(mi_dict) 

print(mom) 

결과는 (의도 한대로 작동) (제대로 작동) 사전에 XML을 변환하는

편집 :

죄송 합니다만, 분명하지는 않지만 설명 된 코드가 예상대로 작동합니다. 하지만 이것이 올바른 방법 (파이썬 방법, pythonic 또는 깨끗한 경우) 모르겠어요.

미리 감사드립니다.

+0

@MartijnPieters 할 수 있습니다. 미안하지만 확실하지 않다면, 그럴 수있는 적절한 방법이 있는지 알아내는 것이 목적입니다 (구문 분석). –

답변

0

나는 그렇게 나쁘지 않다고 생각합니다. 당신은 내가 무엇을 가지고 약간의 변화가 질문에 언급 된 결과를 좀 더 파이썬

from xml.etree import ElementTree 

tree = ElementTree.fromstring(xml) 
mom = [] 
mim = [] 
configuration = tree.find('value[@name="configuration"]').text 
comment = tree.find('value[@name="comment"]').text 
prop = (configuration, comment) 
mom.append(prop) 

for records in tree.findall('./array/record'): 
    mim.append([child.text for child in records.iter('value')]) 

mom += [{k:v} for k, v in mim.iteritems()] 

print(mom) 
관련 문제