C# 序列化可观测集合
我想将包含“Number”元素的ObservableCollection保存到手机上的隔离存储中。每当App.xaml.cs关闭、激活、启动等时,我都会调用App.xaml.cs中FileAccess类的SaveHistory()和LoadHistory()方法。我在App.xaml.cs中定义了一个名为list(observeCollection)的全局变量 调试时,我收到一个错误InvalidOperationException未经处理(XML文档(3,4)中有一个错误)C# 序列化可观测集合,c#,windows-phone-7,xml-serialization,observablecollection,C#,Windows Phone 7,Xml Serialization,Observablecollection,我想将包含“Number”元素的ObservableCollection保存到手机上的隔离存储中。每当App.xaml.cs关闭、激活、启动等时,我都会调用App.xaml.cs中FileAccess类的SaveHistory()和LoadHistory()方法。我在App.xaml.cs中定义了一个名为list(observeCollection)的全局变量 调试时,我收到一个错误InvalidOperationException未经处理(XML文档(3,4)中有一个错误) App.list=
App.list=(ObservableCollection)序列化程序。反序列化(流)代码>(在LoadHistory()中)
公共类文件访问
{
公共静态void SaveHistory()
{
使用(IsolatedStorageFile store=IsolatedStorageFile.GetUserStoreForApplication())
{
使用(IsolatedStorageFileStream=store.CreateFile(“History.xml”))
{
XmlSerializer serializer=新的XmlSerializer(typeof(observeCollection));
serializer.Serialize(流、应用程序列表);
}
}
}
公共静态void LoadHistory()
{
使用(IsolatedStorageFile store=IsolatedStorageFile.GetUserStoreForApplication())
{
//如果文件不存在,请创建该文件。
如果(!store.FileExists(“History.xml”))
{
IsolatedStorageFileStream file=store.CreateFile(“History.xml”);
//处置创建文件时自动创建的流。
file.Close();
Dispose();
}
使用(IsolatedStorageFileStream=store.OpenFile(“History.xml”,System.IO.FileMode.Open))
{
//如果文件不是空的,则将xml反序列化为设置对象并将其加载到数据库中。
如果(stream.Length>0)
{
XmlSerializer serializer=新的XmlSerializer(typeof(observeCollection));
App.list=(ObservableCollection)序列化程序。反序列化(流);
}
其他的
{
//如果文件为空,请创建设置类类型的新ObservableCollection。
App.list=新的ObservableCollection();
}
}
}
}
}
XML文件的内容
<?xml version="1.0"?>
<ArrayOfNumber xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Number>
<numbers>23</numbers>
</Number>
<Number>
<numbers>50</numbers>
</Number>
<Number>
<numbers>14</numbers>
</Number>
<Number>
<numbers>76</numbers>
</Number>
<Number>
<numbers>21</numbers>
</Number>
</ArrayOfNumber>
,在11月5日发表的文章中,以这种方式序列化一个observablecollection应该是可行的。我做错了什么?我认为关键字是XML文档(3,4)中有错误
是的,很可能:)所以假设我在这里发布的代码没有问题,问题一定出在我的“Number”类中?数字对象是否必须以某种特殊的方式格式化才能使列表序列化正常工作?发布XML文件的内容嗯,在哪里可以找到XML文件?(我正在为Windows Phone开发)从独立存储中获取xml文件:我认为关键字是xml文档(3,4)
中有一个错误(是的,很可能是:)所以假设我发布的代码没有问题,问题一定出在我的“Number”类中?数字对象是否必须以某种特殊的方式格式化才能使列表序列化正常工作?发布XML文件的内容嗯,在哪里可以找到XML文件?(我正在为Windows Phone开发)从独立存储中获取xml文件:
<?xml version="1.0"?>
<ArrayOfNumber xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Number>
<numbers>23</numbers>
</Number>
<Number>
<numbers>50</numbers>
</Number>
<Number>
<numbers>14</numbers>
</Number>
<Number>
<numbers>76</numbers>
</Number>
<Number>
<numbers>21</numbers>
</Number>
</ArrayOfNumber>