0
我是Python新手。我想做递归函数来从复杂字典中生成xml(即词典的字典,例如如何从Python中的复杂词典中制作xml
dataDict = {'item1': 'this in item1', 'item2': 'this in item2', 'item3': 'this is item3'} rootDict = {'name': 'Daud', 'code': 'MC111011', 'data': dataDict}
)。
这是我已经试过了,
from lxml import etree
def dict_to_xml(dictData):
for key,val in dictData.items():
if isinstance(val, type(dict)):
child = dict_to_xml(val)
if child is not None:
yield from child
else:
yield key, val
child = etree.Element(key)
child.text = str(val)
return child
# create XML
dataDict = {'item1': 'this in item1', 'item2': 'this in item2', 'item3': 'this is item3'}
rootDict = {'data': dataDict}
for key, value in rootDict.items():
if isinstance(value, type(dict)):
childElement = dict_to_xml(value)
else:
childElement = etree.Element(key)
childElement.text = str(value)
root = etree.Element('root')
root.append(etree.Element('child'))
# another child with text
root.append(childElement)
# pretty string
s = etree.tostring(root, pretty_print=True)
print(s)
我得到以下输出
b"<root>\n <child/>\n <data>{'item1': 'this in item1', 'item2': 'this in item2', 'item3': 'this is item3'}</data>\n</root>\n"
请指引我,我错过了什么。谢谢
@ user6159419请不要忘记,让我们知道是否能解决你的问题,因为它会帮助其他人的情况下,他们面临着类似的问题在未来。 – Prem