2011-01-18 26 views
8

que tiene un archivo XML que Deserialize, la parte divertida es el archivo XML es el fue serializado usando el siguiente código:error Deserialización en el documento XML (1,1)

enter code here 
var serializer = new XmlSerializer(typeof(CommonMessage)); 
var writer = new StreamWriter("OutPut.txt"); 
serializer.Serialize(writer, commonMessage); 
writer.Close(); 

Y estoy tratando de lo deserializó de nuevo para verificar si el resultado coincide con la entrada. todos modos aquí es mi código para deserializar:

var serializer = new XmlSerializer(typeof(CommonMessage)); 
var reader = new StringReader(InputFileName); 
CommonMessage commonMessage = (CommonMessage)serializer.Deserialize(reader); 
+3

¿Ha serializado usando una codificación y ahora están tratando de deserializar con otra codificación? – Oded

+0

no aquí es lo que uso el serializador serializado var = new XmlSerializer (typeof (CommonMessage)); var writer = new StreamWriter ("OutPut.txt"); serializer.Serialize (escritor, commonMessage); writer.Close(); – jprbest

+0

@jprbest - si desea agregar información, por favor _edite_ la pregunta y agregue los detalles allí en lugar de un comentario. – Oded

Respuesta

23

Reemplazar StringReader con StreamReader y no tendrán ningún problema. StringReader lee el valor de la cadena (que es el nombre del archivo en su caso).

+2

este fue el problema porque el lector/grabador de secuencias codifica/decodifica utilizando UTF 8 mientras que el lector/grabador de cadenas codifica/decodifica UTF 16 – jprbest

+0

¡Muchas gracias por esto! Este es un error tan sutil que seguramente puede buscarlo durante mucho tiempo sin encontrar el problema ... – JoeFox

0

Acabo de recibir el mismo mensaje de error pero una fuente de error diferente. En caso de que alguien tenga el mismo problema que yo. Corté el primer char de mi cadena xml dividiendo cadenas. Y la cadena XML se corrompe:

"?xml version="1.0" encoding="utf-16"?> ..." // my error 
"<?xml version="1.0" encoding="utf-16"?> ..." // correct 

(1,1) significa básicamente primer carácter de la primera línea es incorrecta y la cadena no se puede deserializar.

0

incluir en su clase CommonMessage la etiqueta de elemento XmlRoot con su XmlRoot por ejemplo: [XmlRoot ("UIIVerificationResponse")]

Cuestiones relacionadas