本来使用dicttoxml模块直接可以将字典转为xml结构,但是这个模块处理效率比较低,不能满足公司的生产需求。后来结合遍历多层嵌套字典,和xml.etree.ElementTree模块dict to xml的功能,写了下面代码
from xml.etree.ElementTree import Element,tostring
def toxml(doc,element):
if isinstance(doc, dict):
for key in doc:
child = Element(key)
item = doc[key]
child = toxml(item,child) #循环遍历多层字典
element.append(child)
else:
element.text=str(doc) #值
return element
测试代码:
s = {
'a':{
'a1':{
'a12':'A12'
},
'a2':'',
'a3':{
'a31':'A1'
},
'a4':3232
},
'b':{
'b1':'aaaa',
'b2':{
'b21':'bbbbb'
}
}
}
element = Element('root')
xml=toxml(s, element)
print(xml)
x=tostring(xml)
print(x)
输出结果
<Element 'root' at 0x000001D3D679AC78>
b'<root><a><a1><a12>A12</a12></a1><a2 /><a3><a31>A1</a31></a3><a4>3232</a4></a><b><b1>aaaa</b1><b2><b21>bbbbb</b21></b2></b></root>'