.NET XML序列化常用类XmlSerializer及其控制属性有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1323个文字,预计阅读时间需要6分钟。
序列化和反序列化是指什么?
序列化(Serialization):将对象转换为便于传输或存储的数据格式的过程。常见格式包括二进制格式、字节数组、JSON字符串、XML字符串等。
反序列化(Deserialization):将序列化后的数据格式转换回对象的过程。
反序列化(deseriallization):将序列化的数据恢复为对象的过程。 XmlSerializer类
- 该类用一种高度松散耦合的方式提供串行化服务。你的类不需要继承特别的基类,而且它们也不需要实现特别的接口。相反,你只需在你的类或者这些类的公共域以及读/写属性里加上自定义的特性。XmlSerializer通过反射机制读取这些特性并用它们将你的类和类成员映射到xml元素和属性(在对象和 XML 文档之间进行序列化和反序列化操作)。
using System.IO; using System.Xml.Serialization; namespace Practices.Common { public class SimpleSerializer { /// <summary> /// Model实体对象序列化为XML字符串 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="t">Model实体对象</param> /// <returns></returns> public static string SerializeXMLL<T>(T t) { using (StringWriter sw = new StringWriter()) { XmlSerializer xmlSerializer = new XmlSerializer(t.GetType()); xmlSerializer.Serialize(sw, t); return sw.ToString(); } } /// <summary> /// XML反序列化为对象 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="xml">xml字符串</param> /// <returns></returns> public static T Deserialize<T>(string xml) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); StringReader stringReader = new StringReader(xml); return (T)xmlSerializer.Deserialize(stringReader); } } } XmlTypeAttribute类
该类主要控制当属性目标由XML序列化时生成的XML节点。
应用示例/// <summary> /// Envelope /// </summary> [XmlType(TypeName = "envelope")] public class CityRes { public Header header { get; set; } public Response response { get; set; } } XmlElementAttribute类
该类用于指示公共字段或属性在XML序列化或反序列化包含它们的对象时表示XML元素。
应用示例/// <summary> /// Envelope /// </summary> public class CityRes { /// <summary> /// header /// </summary> [XmlElement("header")] public Header header { get; set; } /// <summary> /// response /// </summary> [XmlElement("response")] public Response response { get; set; } } XmlAttributeAttribute类
该类指定XML序列化必须将类成员序列化为XML属性。
应用示例/// <summary> /// Version /// </summary> public class Version { /// <summary> /// port /// </summary> [XmlAttribute("port")] public string port { get; set; } /// <summary> /// host /// </summary> [XmlAttribute("host")] public string host { get; set; } /// <summary> /// text /// </summary> [XmlAttribute("text")] public string text { get; set; } } XmlArrayAttribute类
该类主要用于XML元素数组的应用(相当于就是集合的声明)。
应用示例[XmlArray] public Item []Items { get{return items;} set{items = value;} } XmlTextAttribute类
当Xml文档序列化或反序列化时使用该特性修饰的成员会作为XML文本处理。
应用示例[System.Xml.Serialization.XmlTextAttribute()] public string[] Text { get { return this.textField; } set { this.textField = value; } } XmlIgnoreAttribute类
指示该特性修饰的对象在Xml序列化时不会序列化该特性指定的元素。
应用示例public class TeamGroup { [XmlIgnore] public string Comment; public string GroupName; } 用来控制XML序列化的属性汇总
通过将下表中的特性应用于类和类成员,可以控制XmlSerializer序列化或反序列化该类的实例的方式。 若要了解这些属性如何控制 XML 序列化,请参阅使用属性控制 XML 序列化。
C#: .net序列化及反序列化
用来控制XML序列化的属性
使用属性控制XML序列化
微软官方文档-XML相关类汇总
本文共计1323个文字,预计阅读时间需要6分钟。
序列化和反序列化是指什么?
序列化(Serialization):将对象转换为便于传输或存储的数据格式的过程。常见格式包括二进制格式、字节数组、JSON字符串、XML字符串等。
反序列化(Deserialization):将序列化后的数据格式转换回对象的过程。
反序列化(deseriallization):将序列化的数据恢复为对象的过程。 XmlSerializer类
- 该类用一种高度松散耦合的方式提供串行化服务。你的类不需要继承特别的基类,而且它们也不需要实现特别的接口。相反,你只需在你的类或者这些类的公共域以及读/写属性里加上自定义的特性。XmlSerializer通过反射机制读取这些特性并用它们将你的类和类成员映射到xml元素和属性(在对象和 XML 文档之间进行序列化和反序列化操作)。
using System.IO; using System.Xml.Serialization; namespace Practices.Common { public class SimpleSerializer { /// <summary> /// Model实体对象序列化为XML字符串 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="t">Model实体对象</param> /// <returns></returns> public static string SerializeXMLL<T>(T t) { using (StringWriter sw = new StringWriter()) { XmlSerializer xmlSerializer = new XmlSerializer(t.GetType()); xmlSerializer.Serialize(sw, t); return sw.ToString(); } } /// <summary> /// XML反序列化为对象 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="xml">xml字符串</param> /// <returns></returns> public static T Deserialize<T>(string xml) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); StringReader stringReader = new StringReader(xml); return (T)xmlSerializer.Deserialize(stringReader); } } } XmlTypeAttribute类
该类主要控制当属性目标由XML序列化时生成的XML节点。
应用示例/// <summary> /// Envelope /// </summary> [XmlType(TypeName = "envelope")] public class CityRes { public Header header { get; set; } public Response response { get; set; } } XmlElementAttribute类
该类用于指示公共字段或属性在XML序列化或反序列化包含它们的对象时表示XML元素。
应用示例/// <summary> /// Envelope /// </summary> public class CityRes { /// <summary> /// header /// </summary> [XmlElement("header")] public Header header { get; set; } /// <summary> /// response /// </summary> [XmlElement("response")] public Response response { get; set; } } XmlAttributeAttribute类
该类指定XML序列化必须将类成员序列化为XML属性。
应用示例/// <summary> /// Version /// </summary> public class Version { /// <summary> /// port /// </summary> [XmlAttribute("port")] public string port { get; set; } /// <summary> /// host /// </summary> [XmlAttribute("host")] public string host { get; set; } /// <summary> /// text /// </summary> [XmlAttribute("text")] public string text { get; set; } } XmlArrayAttribute类
该类主要用于XML元素数组的应用(相当于就是集合的声明)。
应用示例[XmlArray] public Item []Items { get{return items;} set{items = value;} } XmlTextAttribute类
当Xml文档序列化或反序列化时使用该特性修饰的成员会作为XML文本处理。
应用示例[System.Xml.Serialization.XmlTextAttribute()] public string[] Text { get { return this.textField; } set { this.textField = value; } } XmlIgnoreAttribute类
指示该特性修饰的对象在Xml序列化时不会序列化该特性指定的元素。
应用示例public class TeamGroup { [XmlIgnore] public string Comment; public string GroupName; } 用来控制XML序列化的属性汇总
通过将下表中的特性应用于类和类成员,可以控制XmlSerializer序列化或反序列化该类的实例的方式。 若要了解这些属性如何控制 XML 序列化,请参阅使用属性控制 XML 序列化。
C#: .net序列化及反序列化
用来控制XML序列化的属性
使用属性控制XML序列化
微软官方文档-XML相关类汇总

