Lista de Python a XML y viceversa.

Tengo un código python que escribí para convertir una lista de python en un elemento XML. Está pensado para interactuar con LabVIEW, de ahí el extraño formato de matriz XML. De todos modos, aquí está el código:

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

Ahora necesito escribir un método unpack () para volver a convertir la matriz XML empaquetada en una lista de python. Puedo extraer las dimensiones de la matriz y los datos muy bien:

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?

Pero no estoy seguro de cómo deshacer la matriz. ¿Cuál sería una forma eficiente de hacer eso?

Edición: Así es como se ve la lista de python y el XML correspondiente. Nota: las matrices son n-dimensionales.

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

Y luego la versión XML:

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

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

Sin embargo, el formato real no es importante, simplemente no sé cómo deshacer la lista de:

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

de vuelta en:

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

dado:

lengths = [2, 2, 2]

Suponga que pack_simple () y unpack_simple () hacen lo mismo que pack () y unpack () para los tipos de datos básicos (int, long, string, boolean).

Respuestas a la pregunta(2)

Su respuesta a la pregunta