Almacenar objetos en XML

Andres Moya Andres.Moya en hispalinux.es
Jue Abr 22 17:48:16 CEST 2004


El jue, 22-04-2004 a las 16:25, Francesc Alted escribió:

> > Seguro que hay algún hack por ahí para conseguir esto, pero no he sido
> > capaz de encontrarlo. ¿Alguna idea? ¿No habrá, por cierto, alguna
> > librería por ahí para hacer esto mismo, pero sin que tenga que "casarme"
> > con algún megaentorno?
> 
> Échale una mirada al paquete Gnosis_Utils [0], de David Mertz. En él hay un
> par de módulos, llamados gnosis.xml.pickle y gnosis.xml.objectify. Uno es
> una especie de pickle pero para python, y el otro te convierte un fichero
> *generico* XML a una representación jerárquica con objectos python siguiendo
> la nomeclatura de "nombrado natural" (natural naming).

Ah, pues tiene una pinta genial, lo probaré.

De todas formas, debe haber alguna manera de hacer eso, si el señor
Mertz lo hace, ¿por qué yo no? :D  Así podría personalizar el tipo de
XML que se genera, aunque si lo veo complicado, pues puedo usar esa
librería, está bastante bien.

Brujuleando por ahí he visto que, al parecer, el pickle normal lo que
hace es que además de la clase guarda el nombre del módulo (que se puede
encontrar en instancia.__class__.__module__), y luego, al cargar,
primero importa el módulo y luego instancia la clase.

He escrito esto que al parecer funciona, aunque no me parece muy bonito:

   def cargar(string_xml):

      [... leer el nombre del modulo y la clase ...]

      modulo = __import__(nombre_modulo)
      instancia = eval("modulo." + nombre_clase + "()")

      [... rellenar los atributos ...]

      return instancia

Ahora tengo que investigar la cuestión de los parámetros del __init__.
Seguiré investigando...

-- 
Andres Moya <Andres.Moya en hispalinux.es>

Contra la guerra global permanente.
Foro Social Mundial - Otro mundo es posible.

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es