2011-01-18 1 views
8

У меня есть файл XML, который я десериализация, забавная часть файл XML является был сериализованной , используя следующий код:десериализация ошибки в документе XML (1,1)

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

И им пытаются десериализовали его снова, чтобы проверить, соответствует ли результат входному сигналу. во всяком случае вот мой код десериализации:

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

Вы сериализовать его, используя одну кодировки, и теперь пытается десериализации с другой кодировкой? – Oded

+0

no вот что я использую сериализованный var serializer = новый XmlSerializer (typeof (CommonMessage)); var writer = новый StreamWriter («OutPut.txt»); serializer.Serialize (автор, commonMessage); writer.Close(); – jprbest

+0

@jprbest - если вы хотите добавить информацию, пожалуйста, _edit_ вопрос и добавьте деталь там вместо комментария. – Oded

ответ

23

Заменить StringReader с StreamReader, и он будет работать нормально. StringReader считывает значение из строки (которая является именем файла в вашем случае).

+2

Это была проблема, потому что устройство чтения/записи потока кодировалось/декодировалось с использованием UTF 8, когда устройство чтения/записи струн кодировалось/декодировалось UTF 16 – jprbest

+0

Так много спасибо за это! Это ошибка настолько тонкая, что вы можете искать ее долгое время, не найдя проблемы ... – JoeFox

0

У меня было то же сообщение об ошибке, но с другим источником ошибок. Если у кого-то такая же проблема, как у меня. Я отрубил самую первую char моей строки xml, разделив строки. И строка XML испортилась:

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

(1,1) означает, что в основном первый символ первой строки неверен и строка не может быть десериализациями.

0

включает в своем классе CommonMessage в XmlRoot тег элемента с вашим xmlroot, например: [XmlRoot («UIIVerificationResponse»)]

Смежные вопросы