我有这样的嵌套python字典。
d = {}
d[a] = b
d[c] = {1:2, 2:3}
我试图以递归方式将嵌套字典转换为xml格式,因为内部可以有更多嵌套字典,例如d[e] = {1:{2:3}, 3:4}
。我想要的XML格式是这样的
<root>
<a>b</a>
<c>
<1>2</1>
<2>3</3>
</c>
</root>
我到目前为止这个python代码使用lxml库来处理嵌套的xml。但它并没有给我所需的输出。
def encode(node, Dict):
if len(Dict) == 0:
return node
for kee, val in Dict.items():
subNode = etree.SubElement(node, kee)
del msgDict[kee]
if not isinstance(val, dict):
subNode.text = str(val)
else:
return encode(subNode, val)
感谢任何帮助。谢谢。
答案 0 :(得分:1)
您调用编码的方式看起来不正确。也许这有帮助。为简单起见,我只需将内容附加到列表(称为l
)。相反,您应该执行etree.SubElement(...)
。
def encode(D, l=[]):
for k, v in D.items():
if isinstance(v, dict):
l2 = [k]
encode(v, l2)
l.append(l2)
else:
l.append([k, v])
答案 1 :(得分:0)
我在我的代码中发现了错误,这是我没有将递归调用返回到原始循环。进入嵌套元素后,它“返回”并且不会返回到原始循环。保存在变量return encode(subNode, val)
中而不是element = encode(subNode, val)
可以解决问题。