【C#随手记】Xml的序列化与反序列化
程序员文章站
2022-06-16 08:19:26
...
主要用到类:
System.Xml.Serialization命名空间下的XmlSerializer(Xml序列化器)类;
System.Xml命名空间下的XmlTextWriter(Xml文本写入者)类;
System.IO命名空间下的MemoryStream(内存流)类;
System.Text命名空间下的Encoding(编码)类;
完整代码:
public static class XmlSerialization
{
/// <summary>
/// 序列化,传入一个类,返回这个类的XML字符串
/// </summary>
public static string Seri(object pObject)
{
//创建一个目标类型的“xml序列化器”对象
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(pObject.GetType());
//创建一个“Xml文本写入”对象,使用内存流、UTF8编码
System.Xml.XmlTextWriter xmlTextWriter = new System.Xml.XmlTextWriter(new System.IO.MemoryStream(), System.Text.Encoding.UTF8);
//开始序列化
xs.Serialize(xmlTextWriter, pObject);
//序列化完成后,获取比特流
System.IO.MemoryStream mStream = (System.IO.MemoryStream)xmlTextWriter.BaseStream;
//比特流转字节组再转成字符串
return System.Text.Encoding.UTF8.GetString(mStream.ToArray());
}
/// <summary>
/// 反序列化,传入一串XML字符串和类型,返回这个对象
/// </summary>
public static T DeSeri<T>(string serializedString) where T : class
{
//创建一个目标类型的“xml序列化器”对象
System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(T));
//创建一个内存流,将目标字符串转为字节组带入构造函数
System.IO.MemoryStream mStream = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(serializedString));
//使用 封装好的Deserialize函数,将流转换为对象
return xs.Deserialize(mStream) as T;
}
}
上一篇: C# 中XML序列化与反序列化学习笔记
下一篇: Collection