2011-01-18 35 views
8

Tôi có một file XML mà tôi deserialize, phần hài hước là file XML là đã serialized sử dụng đoạn mã sau:Deserialization lỗi trong tài liệu XML (1,1)

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

Và im cố gắng deserialized nó một lần nữa để kiểm tra xem đầu ra phù hợp với đầu vào. dù sao ở đây là mã của tôi để deserialize:

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

Bạn đã đăng nó sử dụng một mã hóa và bây giờ đang cố gắng deserialize với mã hóa khác? – Oded

+0

không có ở đây là những gì tôi sử dụng serializer var serializer = new XmlSerializer (typeof (CommonMessage)); var writer = new StreamWriter ("OutPut.txt"); serializer.Serialize (writer, commonMessage); writer.Close(); – jprbest

+0

@jprbest - nếu bạn muốn thêm thông tin, vui lòng _edit_ câu hỏi và thêm chi tiết ở đó thay vì nhận xét. – Oded

Trả lời

23

Thay thế StringReader bằng StreamReader và nó sẽ hoạt động tốt. StringReader đọc giá trị từ chuỗi (là tên tệp trong trường hợp của bạn).

+2

đây là vấn đề bởi vì người đọc/ghi mã hóa/giải mã luồng sử dụng UTF 8 trong khi trình đọc/ghi chuỗi mã hóa/giải mã usng UTF 16 – jprbest

+0

Cảm ơn rất nhiều vì điều này! Đây là một lỗi rất tinh tế, để chắc chắn bạn có thể tìm kiếm nó trong một thời gian dài mà không gặp vấn đề ... – JoeFox

0

Tôi vừa nhận được thông báo lỗi tương tự nhưng nguồn lỗi khác nhau. Trong trường hợp ai đó có cùng một vấn đề như tôi. Tôi đã cắt nhỏ char của chuỗi xml đầu tiên bằng cách tách chuỗi. Và chuỗi xml bị hỏng:

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

(1,1) có nghĩa là về cơ bản char đầu tiên của dòng đầu tiên là không chính xác và chuỗi không thể deserialized.

0

bao gồm trong lớp CommonMessage bạn tag yếu tố XmlRoot với xmlroot ví dụ của bạn: [XmlRoot ("UIIVerificationResponse")]

Các vấn đề liên quan