附加\ 0(反斜杠0或Null)字符的Xml序列化?

ale*_*dev 5 c# xml-serialization

我试图序列化一个对象,并将\ 0(空)字符附加到生成的字符串.为什么?

我的代码:

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

 string xml = Encoding.UTF8.GetString(memStream.GetBuffer()); // appends \0
Run Code Online (Sandbox Code Playgroud)

我的工作是用空字符串替换Null字符

xml.Replace("\0", string.Empty)
Run Code Online (Sandbox Code Playgroud)

谢谢.

dtb*_*dtb 11

MemoryStream.GetBuffer()返回的基本缓冲器的MemoryStream(它小于存储在它的实际数据大).你想要MemoryStream.ToArray().

但是,我建议您使用StringWriter而不是MemoryStream,这样就可以避免UTF-8转换:

XmlSerializer serializer = new XmlSerializer(typeof(PlanogramSearchOptions));
StringWriter writer = new StringWriter();
serializer.Serialize(writer, searchOptions);
string xml = writer.ToString();
Run Code Online (Sandbox Code Playgroud)

另请参阅:将对象序列化为字符串