Cuando intentamos leer un archivo XML con XmlTextReader en C# y el archivo no proporciona el tipo de codificación nos saltará un error por contener caracteres extraños.
Todos los archivos XML indican el tipo de codificación con la siguiente linea: <?xml version="1.0" encoding="ISO-8859-1" ?>
Esta linea es la que utiliza XmlTextReader para saber como esta codificado el archivo, pero como ya he dicho podemos encontrarnos con el problema de que esta linea no se encuentre en el fichero y tengamos que indicarle a XmlTextReader que codificación tiene que usar.
Existen dos formas de hacer esto, una seria leer el fichero y volver a escribirlo añadiendo la linea de codificación o leer el fichero directamente e indicarle el tipo de codificación que debe utilizar.
Yo os voy a enseñar la segunda opción porque creo que es la más eficiente, os muestro como seria:
1
2
| StreamReader leer_archivo = new StreamReader(direccion_archivo.Text, Encoding.Default);
XmlTextReader leer_xml = new XmlTextReader(leer_archivo); |
StreamReader leer_archivo = new StreamReader(direccion_archivo.Text, Encoding.Default);
XmlTextReader leer_xml = new XmlTextReader(leer_archivo);
Como veis es muy sencillo, leemos el archivo con StreamReader y le indicamos el tipo de codificación y después se lo pasamos a XmlTextReader.
Recordaros que debéis de utilizar el namespace System.IO, namespace System.Xml y el namespace System.Text
Espero que os sea de utilidad.