Генерация XML из вложенных нумерованных списков в Python - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть структура вложенного нумерованного списка, например:

1.1 - "james"
1.1.1 - "alice"
1.2.1 - "bob"

Какой самый лучший / самый быстрый способ превратить его в структуру XML, подобную этой:

> <1>  
>    <1><james/>
>       <1><alice/></1>
>       <2><bob/></2>
>    </1>  
> </1>  

Это очень просто, если глубина нумерованных списков составляет всего 3, но вв этом случае он неизвестен, может быть до 6. Я почти уверен, что мне нужно создать рекурсивную самоссылочную функцию, но мне нужен способ поместить каждый элемент на свое место в структуре XML, на которой я застрял вмомент.

1 Ответ

1 голос
/ 15 февраля 2012

Вот небольшая рекурсивная функция, которая преобразует списки в строки 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>'
...