C# Xml序列化是否附加\0(反斜杠0或Null)字符?

C# Xml序列化是否附加\0(反斜杠0或Null)字符?,c#,xml-serialization,C#,Xml Serialization,我正在尝试序列化一个对象,并且\0(Null)字符被追加到生成的字符串中。为什么? 我的代码: XmlSerializer serializer = new XmlSerializer(typeof(Common.PlanogramSearchOptions)); MemoryStream memStream = new MemoryStream(); serializer.Serialize(memStream, searchOptions); string xml = Encodi

我正在尝试序列化一个对象,并且\0(Null)字符被追加到生成的字符串中。为什么?

我的代码:

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

 string xml = Encoding.UTF8.GetString(memStream.GetBuffer()); // appends \0
我的解决方法是用空字符串替换空字符

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

返回的基础缓冲区(大于存储在其中的实际数据)。你想要的

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

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

另请参见:

非常好!这很有效,谢谢你的建议。。。我将全面实施这一点。谢谢,谢谢。当我打算在不同的上下文中排列时,我正在使用MemoryStream.GetBuffer。终于找到了我的路。:)