2010-09-23 33 views
5

Tôi đang cố gắng sắp xếp một đối tượng và ký tự \ 0 (Null) đang được thêm vào chuỗi đã tạo. Tại sao?Xml serialization chắp thêm ký tự 0 (dấu gạch chéo ngược 0 hoặc Null)?

Mã của tôi:

XmlSerializer serializer = new XmlSerializer(typeof(Common.PlanogramSearchOptions)); 
MemoryStream memStream = new MemoryStream(); 
serializer.Serialize(memStream, searchOptions); 

string xml = Encoding.UTF8.GetString(memStream.GetBuffer()); // appends \0 

Công việc của tôi xung quanh đang thay thế các nhân vật Null với một chuỗi rỗng

xml.Replace("\0", string.Empty) 

Cảm ơn.

Trả lời

10

MemoryStream.GetBuffer() trả về bộ đệm cơ bản của MemoryStream (lớn hơn dữ liệu thực tế được lưu trữ trong đó). Bạn muốn MemoryStream.ToArray().

Tuy nhiên, tôi khuyên bạn nên sử dụng một StringWriter thay vì MemoryStream, vì vậy bạn có thể tránh được việc chuyển đổi UTF-8:

XmlSerializer serializer = new XmlSerializer(typeof(PlanogramSearchOptions)); 
StringWriter writer = new StringWriter(); 
serializer.Serialize(writer, searchOptions); 
string xml = writer.ToString(); 

Xem thêm: Serialize an object to string

+0

Tuyệt vời! Điều đó làm việc và cảm ơn bạn đã gợi ý của bạn ... tôi sẽ thực hiện điều đó trên bảng. Cảm ơn bạn. –

+0

Cảm ơn. Tôi đã sử dụng MemoryStream.GetBuffer khi tôi có nghĩa ToArray trong một ngữ cảnh khác. Tìm thấy con đường của tôi ở đây cuối cùng. :) – Greg

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