Список Python в XML и наоборот

У меня есть некоторый код Python, который я написал, чтобы преобразовать список Python в элемент XML. Он предназначен для взаимодействия с LabVIEW, отсюда и странный формат массива XML. В любом случае, вот код:

def pack(data):
  # create the result element
  result = xml.Element("Array")

  # report the dimensions
  ref = data
  while isinstance(ref, list):
    xml.SubElement(result, "Dimsize").text = str(len(ref))
    ref = ref[0]

  # flatten the data
  while isinstance(data[0], list):
    data = sum(data, [])

  # pack the data
  for d in data:
    result.append(pack_simple(d))

  # return the result
  return result

Теперь мне нужно написать метод unpack () для преобразования упакованного массива XML обратно в список python. Я могу извлечь размеры массива и данные просто отлично:

def unpack(element):
  # retrieve the array dimensions and data
  lengths = []
  data = []
  for entry in element:
    if entry.text == "Dimsize":
      lengths.append(int(entry.text))

    else:
      data.append(unpack_simple(entry))

  # now what?

Но я не уверен, как развернуть массив. Какой эффективный способ сделать это?

Изменить: вот как выглядит список Python и соответствующий XML. Примечание: массивы n-мерны.

data = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]

И тогда версия XML:

<Array>
  <Dimsize>2</Dimsize>
  <Dimsize>2</Dimsize>
  <Dimsize>2</Dimsize>
  <I32>
    <Name />
    <Val>1</Val>
  </I32>

  ... 2, 3, 4, etc.
</Array>

Фактический формат не важен, хотя, я просто не знаю, как отсоединить список от:

data = [1, 2, 3, 4, 5, 6, 7, 8]

Вернуться в:

data = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]

дано:

lengths = [2, 2, 2]

Предположим, что pack_simple () и unpack_simple () делают то же самое, что pack () и unpack () для основных типов данных (int, long, string, boolean).

Ответы на вопрос(2)

Ваш ответ на вопрос