核心代碼
using System.Xml.Serialization;
using System.IO;
public void SaveToXml(BindingList list, string filePath) where T : class {
// BindingList 不直接支持 XmlSerializer,轉 List
var serializer = new XmlSerializer(typeof(List));
using (var writer = new StreamWriter(filePath, false, Encoding.UTF8)) {
serializer.Serialize(writer, list.ToList());
}
}
public BindingList LoadFromXml(string filePath) where T : class, new() {
var serializer = new XmlSerializer(typeof(List));
using (var reader = new StreamReader(filePath, Encoding.UTF8)) {
var list = (List)serializer.Deserialize(reader);
return new BindingList(list);
}
}
參考
C# 導出 List 數據到 XML 文件 [附源碼]
注意
- 類 `T` 需公共無參構造函數、公共屬性可讀寫。
- 屬性標記 `[XmlIgnore]` 排除不需序列化字段。
- 大數據量建議用 `XmlWriter`/`XmlReader` 流式處理避免 OOM。