舉個例子如何序列化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中
}