El mié, 25-08-2010 a las 13:33 +0200, Chema Cortes escribió:

> El 25 de agosto de 2010 10:02, Mauricio Baeza
> <mauri...@correolibre.net> escribió:
> 
> > Gracias por tu respuesta, efectivamente, abriéndolo con:
> >
> > archivo=codecs.open("Factura.xml","w",encoding="utf8")
> >
> > puedo grabar sin problemas el archivo editado, pero me queda la duda por 
> > que al generarlo puedo guardarlo sin problemas con caracteres acentuados 
> > con las siguientes líneas:
> >
> > archivo = open('Factura.xml', 'w')
> > archivo.write(domDoc.toxml())
> > archivo.close()
> >
> > pero no al editarlo.
> 
> Después de analizar un poco el problema que comentas, veo que en la
> edición estás añadiendo un atributo con una cadena "no-unicode" leída
> de un fichero de texto. Al pasar el dom a xml (por defecto en utf8) es
> donde salta el problema al no saber pasar a unicode, antes incluso de
> grabar en el fichero.
> 
> Con python3, todo texto es unicode y no aparece este problema; pero
> con python2 debes pasar la cadena a unicode antes de añadirla al dom:
> 
> sello = open('sellob64.txt', 'r').read()
> sello = unicode(sello, "utf8")  #cambia a la codificación que tenga el fichero
> 
> También podrías leer el fichero de texto en utf8 con el módulo codecs
> tal y como te había comentado antes.
> 
> Espero que algún experto en xml pueda confirmar lo dicho.
> _______________________________________________


Hola Chema...

Agradezco el tiempo que le has dedicado...

He probado a abrir el XML y guardar inmediatamente (sin editar) y me da
el mismo error, también abrí el archivo de texto como me has enseñado y
da el mismo error, por lo que todo apunta a que el problema esta en el
modo en que minidom parsea el XML en la línea:

domDoc = minidom.parse('factura.xml')

Por lo pronto el tema esta resuelto con la línea que me has enseñado:

archivo = codecs.open("factura.xml","w",encoding="utf8")

Pero si, ojala algún experto en XML pueda iluminarnos...


Un abrazo


-- 
Mauricio Baeza

10 años usando OpenOffice.org, libre, gratuito y seguro
____________________________
Todo lo que no es dado es perdido
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a