【发布时间】:2010-11-06 10:49:34
【问题描述】:
我有以下函数,它完成了将 lxml 对象映射到字典的基本工作......
from lxml import etree
tree = etree.parse('file.xml')
root = tree.getroot()
def xml_to_dict(el):
d={}
if el.text:
print '***write tag as string'
d[el.tag] = el.text
else:
d[el.tag] = {}
children = el.getchildren()
if children:
d[el.tag] = map(xml_to_dict, children)
return d
v = xml_to_dict(root)
此刻它给了我....
>>>print v
{'root': [{'a': '1'}, {'a': [{'b': '2'}, {'b': '2'}]}, {'aa': '1a'}]}
但我想....
>>>print v
{'root': {'a': ['1', {'b': [2, 2]}], 'aa': '1a'}}
如何重写函数 xml_to_dict(el) 以获得所需的输出?
为了清楚起见,这是我正在解析的 xml。
<root>
<a>1</a>
<a>
<b>2</b>
<b>2</b>
</a>
<aa>1a</aa>
</root>
谢谢:)
【问题讨论】:
-
使用字典将只允许在带有键 a 或 b 的元素上,您希望如何 - 即最好显示您需要的输出是什么
-
已经改写了问题以包含所需的输出 - 谢谢马克
标签: python xml list dictionary lxml