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&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 또는 깨끗한 경우) 모르겠어요.
미리 감사드립니다.
@MartijnPieters 할 수 있습니다. 미안하지만 확실하지 않다면, 그럴 수있는 적절한 방법이 있는지 알아내는 것이 목적입니다 (구문 분석). –