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, 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With