XML сериализация с добавлением символа \ 0 (обратная косая черта 0 или ноль)? - PullRequest
5 голосов
/ 23 сентября 2010

Я пытаюсь сериализовать объект, и к сгенерированной строке добавляется символ \ 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

Моя работа заключается в замене символа Null пустой строкой

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

Спасибо.

1 Ответ

11 голосов
/ 23 сентября 2010

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();

См. Также: Сериализация объекта в строку

...