El día 27 de agosto de 2010 11:55, Chema Cortes <pych...@gmail.com> escribió:
> El día 26 de agosto de 2010 17:28, Luis Miguel Morillas
> <moril...@gmail.com> escribió:
>
>> Puedes sustituirla por ésta:
>>    archivo.write(domDoc.toxml(encoding="utf-8"))
>> que sí que funciona.
>
> Un detalle, que igual puede dar alguna pista, es que el .toxml sin
> encoding devuelve una cadena unicode, mientras que si lleva el
> parámetro encoding devuelve una cadena normal con el campo encoding de
> xml correspondiente.
>
> Creo que el problema está al combinar unicode y no-unicode. Si se abre
> el fichero xml con open, entonces hay que convertir todo a la
> codificación que lleve el fichero; si se abre desde minidom, entonces
> todo hay que trabajarlo en unicode.

Sí y no. Las librerías de xml siempre tabajan internamente con
unicode. El problema es la ambigüedad del parámetro "encoding", que
funciona correctamente en .toxml() y no en .writexml(). Tiene pinta de
que .writexml() trabaja a más bajo nivel y exige que el writer que se
le pasa como parámetro (el fichero en este caso) haga el encoding de
los caracteres. De hecho toxml() llama a writexml(), pero eso no está
claro en la documentación. De hecho si abres el fichero factura y
guardas el arbol tal cual sin modificar con writexml, también genera
la excepción.

-- lm

> _______________________________________________
> Python-es mailing list
> Python-es@python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
_______________________________________________
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