序列化和反序列化是指什么?序列化(seriallization): 将对象转化为便于传输的数据格式, 常见的序列化格式:二进制格式,字节数组,json字符串,xml字符串。 反序列化(deseriallization):将
反序列化(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相关类汇总
