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/