我有一个嵌套的编号列表结构,如下所示:
1.1 - “詹姆斯”
1.1.1 - “alice”
1.2.1 - “bob”
将它变成这样的XML结构的最佳/最快方法是什么:
> <1>
> <1><james/>
> <1><alice/></1>
> <2><bob/></2>
> </1>
> </1>
如果编号列表的深度仅为3,这非常容易,但在这种情况下,它是未知的,可能最多6个。 我很确定我需要创建一个递归的自引用函数,但需要一种方法将每个元素放在XML结构中的位置,我现在仍然坚持这一点。
答案 0 :(得分:1)
这是一个小的递归函数,它将列表转换为XML字符串。添加填充支持或限制深度是很容易添加的,但我会留给你。
def xml(it, depth=1):
s = ''
for k, v in enumerate(it):
s += '<%d>' % (k+1)
if isinstance(v, list):
s += xml(v, depth+1)
else:
s += str(v)
s += "</%d>\n" % (k+1)
return s
这是一个示例用法和输出。
>>> data = ['Names', ['Boy names'], ['Girl Names', ['J-Names', ['Jill', 'Jen']]]]
>>> print xml(data)
'<1>Names</1>
<2><1>Boy names</1>
</2>
<3><1>Girl Names</1>
<2><1>J-Names</1>
<2><1>Jill</1>
<2>Jen</2>
</2>
</2>
</3>'