C# 序列化和反序列化(xml 文件)
序列化是将对象保存为文本文件或二进制文件;
反序列化则是读取文件信息,还原为对象;
序列化保存为文本内容,主要是 xml 和 json 两种,这里介绍序列化为 xml 文件的方式。
想要序列化,先要在类上添加 [Serializable] 特性标签,如:
[Serializable] public class Person { private string test1 = "test1"; protected string test2 = "test2"; public string test3 = "test3"; internal string test4 = "test4"; public int id { get; set; } public string name { get; set; } public int age { get; set; } public override string ToString() { return $"[id={id}, name={name}, age={age}, test1={test1}, test2={test2}, test4={test3}, test4={test4}]"; } }
C# 中处理 xml 序列化的相关类都在 System.Xml.Serialization 命名空间下,这里通过使用 XmlSerializer 类来实现序列化和反序列化:
public class xml_serializer_manager{ /// <summary> /// serialize object to xml file. /// </summary> /// <param name="path">the path to save the xml file</param> /// <param name="obj">the object you want to serialize</param> public void serialize_to_xml(string path, object obj) { XmlSerializer serializer = new XmlSerializer(obj.GetType()); string content = string.Empty; //serialize using (StringWriter writer = new StringWriter()) { serializer.Serialize(writer, obj); content = writer.ToString(); } //save to file using (StreamWriter stream_writer = new StreamWriter(path)) { stream_writer.Write(content); } } /// <summary> /// deserialize xml file to object /// </summary> /// <param name="path">the path of the xml file</param> /// <param name="object_type">the object type you want to deserialize</param> public object deserialize_from_xml(string path, Type object_type) { XmlSerializer serializer = new XmlSerializer(object_type); using (StreamReader reader = new StreamReader(path)) { return serializer.Deserialize(reader); } } }
使用方法:
序列化:
xml_serializer_manager manager = new xml_serializer_manager(); string path = @"D:\person.xml"; Person p = new Person { id=1001, name="tommy", age=30}; manager.serialize_to_xml(path, p);
结果如下:
生成 person.xml 文件,而且只处理了 public 修饰的属性,其他都不处理
反序列化:
xml_serializer_manager manager = new xml_serializer_manager(); string path = @"D:\person.xml"; Person p = (Person)manager.deserialize_from_xml(path, typeof(Person)); Console.Write(p.ToString());
结果:
分类:
C#相关
标签:
c# xml 序列化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2018-08-01 windows10 设置软件开机启动
2016-08-01 C#中通过Lambda表达式为委托传入更多的参数