XmlSerializer可实现对象与XML互转,需类有公共无参构造函数及可读写public成员;支持XmlElement[XmlIgnore]等特性控制序列化行为,反序列化需XML结构匹配目标类型。
在C#中,用 XmlSerializer 类就能轻松把对象转成XML(序列化),也能把XML还原成对象(反序列化)。关键是要让类支持XML序列化——比如加必要的特性、保证字段/属性可访问。
使用 XmlSerializer 将实例写入 StringWriter,即可获得XML文本。注意:被序列化的类必须有公共无参构造函数,要序列化的字段或属性需是 public 且可读可写。
[Serializable] 不是必须的(XmlSerializer 不依赖它)[XmlElement] 可自定义节点名,[XmlAttribute] 可把属性序列化为XML属性[XmlIgnore] 跳过某个字段/属性不参与序列化把XML字符串加载进 StringReader,再用 XmlSerializer.Deserialize() 还原为对象。XML结构必须和目标类型匹配,否则会抛出异常。
XmlSerializer 构造时传入 XmlRootAttribute 并设置 Namespace
Try-Catch 捕获 InvalidOperationException 或 XmlException
实际用的时候容易踩坑,比如日期格式、集合序列化、只读属性等。
2025-05-12T14:30:00),如需自定义,可用 ToString("yyyy-MM-dd") 转为字符串属性再序列化IEnumerable 接口,需确保运行时是具体可序列化类型(如 List[XmlElement] 配合 setter
基本上就这些。XmlSerializer 简单直接,适合结构稳定、可控的场景。如果需要更灵活控制(如处理任意JSON/XML混合、忽略大小写、动态字段),可以考虑 System.Text. 或第三方库,但纯XML交互,它够用又可靠。
Json