Xml serialization appending the \0 (backslash 0 or Null) character?
I am trying to serialize an object and the \0 (Null) character is being appended to the generated string. Why?
My code:
XmlSerializer serializer = new XmlSerializer(typeof(Common.PlanogramSearchOptions));
MemoryStream memStream = new MemoryStream();
serializer.Serialize(memStream开发者_JS百科, searchOptions);
string xml = Encoding.UTF8.GetString(memStream.GetBuffer()); // appends \0
My work around is replacing the Null character with an empty string
xml.Replace("\0", string.Empty)
Thanks.
MemoryStream.GetBuffer() returns the underlying buffer of the MemoryStream (which is larger than the actual data stored in it). You want MemoryStream.ToArray().
However, I recommend you use a StringWriter instead of MemoryStream, so you can avoid the UTF-8 conversion:
XmlSerializer serializer = new XmlSerializer(typeof(PlanogramSearchOptions));
StringWriter writer = new StringWriter();
serializer.Serialize(writer, searchOptions);
string xml = writer.ToString();
See also: Serialize an object to string
精彩评论