举个例子如何序列化XML文件到某个ObservableCollection<T>类型的集合上:
定义一个ObservableCollection<类名>
private ObservableCollection<school> m_SchoolList;
public ObservableCollection<school> SchoolList
{
get { return m_SchoolList; }
set
{
m_SchoolList = value;
this.RaisePropertyChanged("SchoolList");//这个是继承监听类的RaisePropertyChanged方法
}
}
将存放在项目某个文件下XML数据源的数据赋值到指定的这个ObservableCollection<类名>集合中
///
/// ObservableCollection<类名> 这个指的是要序列化到什么集合上
/// string filename = "文件名.xml" 这个参数需要更换为要序列化的的文件名
///
public ObservableCollection<school> LoadeXML(string filename = "文件名.xml")
{
try
{
Type typePer = typeof(ObservableCollection<school>); // 指明要序列化成的类型
XmlSerializer xmlser = new XmlSerializer(typePer);
FileStream fs = new FileStream(Path.Combine("Resources/Date", filename), FileMode.Open); // 这一段是拼写一个路径,在Resourses文件夹下Date子文件加上提供的XMl的名称拼写一个完整路径
using (fs) //释放那么一下子
{
return (ObservableCollection<school>) xmlser.Deserialize(fs);//这才是最终结果
}
}
catch (Exception)
{
throw;
}
}
还差一步:
///把获取到的数据赋值与之前定义的 ObservableCollection<school> SchoolList集合中
/// 我这是个构造函数不用管
public DataConvert()
{
SchoolList = LoadeXML();//通过反序列化的LoadeXML方法进行去赋值到SchoolList中
}