StackOverflow似乎有很多解决方案将XML转换为Python字典,但它们都不会生成我正在寻找的输出。我有以下XML:使用lxml将XML转换为Python字典
<?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 has an elegantly simple solution转换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'}
})
我不能想象e出了如何获得我想要的输出,而不会使recursive_dict()函数复杂化。
我没有绑定到lxml,并且我也可以使用字典的不同组织,只要它能够提供我在xml中的所有信息即可。谢谢!
出于好奇,您为什么期望获得段的属性,而不是状态的属性?什么魔法让图书馆知道你想要什么?还有...部分内容是属性而不是元素的原因是什么? – GreenAsJade 2014-10-31 02:01:20
XML来自我无法控制的来源。我需要能够消费并采取行动。这就是为什么我说我会对词典的另一个组织“很好”。我的目标是将所有的信息 - 无论是标签,文本,属性等 - 都变成一个简单的结构,如字典。没有“魔力”需要。 “无”的值是好的。我只想要捕获XML中的所有信息。 – proximous 2014-10-31 03:50:02
这听起来像你有一个解决方案,但我只是想指出,你显示的所需输出并不显示_ALL_捕获的信息。它显示捕获的部分的属性,但不显示状态的属性。 – GreenAsJade 2014-10-31 04:11:36