После записи и чтения строки xml в поток и из потока он перестает быть десериализуемым. Новая строка обрезается.Xml Задача сериализации/десериализации
string XmlContent = getContentFromMyDataBase();
XmlSerializer xs = new XmlSerializer(typeof(MyObj));
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
char[] ca = XmlContent.ToCharArray(); // still working up to this point.
ms.Position = 0;
sw.Write(ca);
StreamReader sr = new StreamReader(ms);
ms.Position = 0;
string XmlContentAgain = sr.ReadToEnd();
Console.WriteLine(XmlContentAgain); // (outputstring is too short.)
MyObj theObj = (MyObj)xs.Deserialize(ms); // Can't deserialize.
Любые предложения относительно того, как исправить это или что вызывает проблему? Мое единственное предположение - проблема с кодировкой, но я не знаю, как ее найти/исправить.
Кроме того, myObj имеет общий член словаря, который обычно не является сериализуемым, поэтому я украл код от Paul Welter, чтобы его сериализовать.
Почему вы не храните XML в базе данных? – Mark
Поскольку база данных SQL является реляционной. XML является иерархическим. Они несовместимы. База данных предназначена для хранения данных, а не для хранения представления данных (это XML). –
XML - это текст. Базы данных очень хороши при хранении текста. Весьма удобно хранить XML в базе данных. Ваше различие между «данными» и «представлением данных» произвольно и бессмысленно. – Mark