StackOverflow 上似乎有很多用于将 XML 转换为 Python 字典的解决方案,但它们都没有生成我正在寻找的输出。我有以下 XML:
<?xml version="1.0" encoding="UTF-8"?>
<status xmlns:mystatus="http://localhost/mystatus">
<section1
mystatus:field1="data1"
mystatus:field2="data2" />
<section2
mystatus:lineA="outputA"
mystatus:lineB="outputB" />
</status>
lxml 有一个优雅简单的解决方案 http://lxml.de/FAQ.html#how-can-i-map-an-xml-tree-into-a-dict-of-dicts将 XML 转换为字典:
def recursive_dict(element):
return element.tag, dict(map(recursive_dict, element)) or element.text
不幸的是,我得到:
('status', {'section2': None, 'section1': None})
代替:
('status', {'section2':
{'field1':'data1','field2':'data2'},
'section1':
{'lineA':'outputA','lineB':'outputB'}
})
我无法弄清楚如何在不使 recursive_dict() 函数变得非常复杂的情况下获得所需的输出。
我不受 lxml 的束缚,而且我也可以接受字典的不同组织,只要它为我提供 xml 中的所有信息即可。谢谢!