我正在尝试将xml文档转换为Python数据结构。
xml的一个示例:
<SOFTWARES>
<PUBLISHER>Microsoft Corporation</PUBLISHER>
<NAME>Microsoft Office Visio 2010</NAME>
<VERSION>14.0.6029.1000</VERSION>
<FOLDER>C:/Program Files/Microsoft Office/</FOLDER>
<LANGUAGE>Language Neutral</LANGUAGE>
<INSTALLDATE>2012/03/29</INSTALLDATE>
</SOFTWARES>
<SOFTWARES>
<PUBLISHER>Microsoft</PUBLISHER>
<NAME>Update for Microsoft Office 2010 (KB2553310) 64-Bit Edition</NAME>
<INSTALLDATE>0000//0/0/00</INSTALLDATE>
</SOFTWARES>
lxml.de有一个很好的例子:http://lxml.de/FAQ.html#how-can-i-map-an-xml-tree-into-a-dict-of-dicts
def xml_to_dict(element):
return element.tag, dict(map(xml_to_dict, element)) or element.text
这产生了一个伟大的词典,只有一个缺陷。它将覆盖现有密钥。所以当这个过程完成后,我得到:
'SOFTWARES': {
'PUBLISHER': 'Microsoft',
'NAME': 'Update for Microsoft Office 2010 (KB2553310) 64-Bit Edition',
'INSTALLDATE': '0000//0/0/00',
},
最后一个SOFTWARES块,无论前面有多少块。 lxml的函数运行良好,因为它是递归的,但我想写一些可以处理重复键的东西。最好只是将SOFTWARES dicts扔在一个列表中,我可以在时间到来时遍历列表。
答案 0 :(得分:1)
针对此特定案例的最简单解决方案:
map(xml_to_dict, xml_document)
这将为您提供词典列表。