Guardar achivo XML en Python 2.6.2

Chema Cortes pych3m4 en gmail.com
Lun Jul 20 03:47:46 CEST 2009


El 18 de julio de 2009 21:34, Ramon Becerra
Reynoso<ingcomrbr en gmail.com> escribió:

> Ahora me encuentro con que no puedo hacer lo mismo en esta version y he
> buscado para ver cual Metodo me permite hacerlo, ya probe de esta manera,
>
> def write_to_file( self, doc, name = None ):
>     fileName = open( name, "w" )
>     try:
>         fileName.write( doc.toprettyxml(indent="  "))
>     finally:
>         fileName.close()
>
> pero al volver a leer el XML me muestra los espacios, tambien quitandole el
> espacio, pero no se guarda como XML, sino como archivo de texto.

El prettyprint del minidom estaba basado en pyxml, módulo que ha
quedado apartado. Como alternativa, podrías usar el prettyprint del
DOM nivel 2:

from xml.dom.ext import PrettyPrint
from StringIO import StringIO

def toprettyxml_fixed (node, encoding='utf-8'):
    s = StringIO()
    PrettyPrint(node, stream=s, encoding=encoding)
    return s.getvalue()

No entiendo lo de que no se guarda como XML, sobre todo cuando abres
el archivo directamente en modo texto. Prueba a abrirlo en binario:

   fileName = open(name, "wb")


Otro consejillo: emplea el 'with'

from xml.dom.ext import PrettyPrint

with open(name,"wb") as f:
   PrettyPrint(doc, f, encoding='utf-8')
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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