我使用FileStream将对象序列化为Xml并保存到磁盘
Stream str = new FileStream(@"serializedstate.xml", FileMode.OpenOrCreate)
XmlSerializer x = new XmlSerializer(typeof(GridState));
x.Serialize(str, new GridState
{
GridName= txtGridName.Text,
GridColumns = GetGridColumnStates()
});
这很好用,并且在磁盘上生成Xml文件。如何使用Linq to SQL将序列化的对象作为Xml保存到Sql Server 2008数据库的XML列中?以及如何从数据库反序列化相同的内容?
答案 0 :(得分:7)
序列化为XElement
XmlSerializer x = new XmlSerializer(typeof(GridState));
XDocument doc = new XDocument();
using (XmlWriter xw = doc.CreateWriter())
{
x.Serialize(xw, new GridState
{
GridName= txtGridName.Text,
GridColumns = GetGridColumnStates()
});
xw.Close();
}
XElement el = doc.Root;
反序列化
using (XmlReader xr = el.CreateReader())
{
GridState myDeserializedObject = x.Deserialize(xr) as GridState;
xr.Close();
}
答案 1 :(得分:0)
在sql中你必须有colum类型的XML,而在linq中,Colum的类型必须是XElement,而不是你可以操作throw Linq。