从Python中的嵌套编号列表生成XML

时间:2012-02-14 20:36:32

标签: python recursion nested-lists

我有一个嵌套的编号列表结构,如下所示:

  

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结构中的位置,我现在仍然坚持这一点。

1 个答案:

答案 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>'