.net C# XML / Binary 序列化反序列化代码示例
2012-06-28 14:45
387 查看
public static class Utility { /// <summary> /// 对象序列化成 XML String /// </summary> public static string XmlSerialize<T>(T obj) { string xmlString = string.Empty; XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream()) { xmlSerializer.Serialize(ms, obj); xmlString = Encoding.UTF8.GetString(ms.ToArray()); } return xmlString; } /// <summary> /// XML String 反序列化成对象 /// </summary> public static T XmlDeserialize<T>(string xmlString) { T t = default(T); XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString))) { using (XmlReader xmlReader = XmlReader.Create(xmlStream)) { Object obj = xmlSerializer.Deserialize(xmlReader); t = (T)obj; } } return t; } /// <summary> /// 二进制序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj">要序列化的对象</param> public static byte[] BinarySerialize<T>(T obj) { byte[] binObj = null; using(MemoryStream ms = new MemoryStream()) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(ms, obj); binObj = ms.GetBuffer(); } return binObj; } /// <summary> /// 二进制反序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="stream"></param> /// <returns></returns> public static T BinaryDeserialize<T>(byte[] binObj) { T t = default(T); using (MemoryStream ms = new MemoryStream(binObj, false)) { BinaryFormatter bf = new BinaryFormatter(); t = (T)bf.Deserialize(ms); } return t; } /// <summary> /// 执行XML序列化并保存成文件 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <param name="fileName"></param> public static void SerializeToXMLFile<T>(T obj, string fileName) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); using (FileStream fs = new FileStream(fileName, FileMode.Create)) { xmlSerializer.Serialize(fs, obj); fs.Flush(); } } /// <summary> /// 从XML文件反序列化出Object /// </summary> /// <typeparam name="T"></typeparam> /// <param name="fileName"></param> /// <returns></returns> public static T DeserializeFromXMLFile<T>(string fileName) { T t = default(T); using (FileStream fs = new FileStream(fileName, FileMode.Open)) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); t = (T)xmlSerializer.Deserialize(fs); } return t; } /// <summary> /// Clone object by xml serialize. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <returns></returns> public static T XmlClone<T>(T obj) { return Utility.XmlDeserialize<T>(Utility.XmlSerialize<T>(obj)); } /// <summary> /// Clone object by binary serialize /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <returns></returns> public static T BinaryClone<T>(T obj) { return Utility.BinaryDeserialize<T>(Utility.BinarySerialize<T>(obj)); } }
相关文章推荐
- 分享C#实现XML和实体序列化和反序列化的代码
- C#.NET示例读写xml所有节点的代码实现方法和读取xml节点的数据总结
- C#.NET示例读写xml所有节点的代码实现方法和读取xml节点的数据总结
- C#.NET示例读写xml所有节点的代码实现方法和读取xml节点的数据总结
- C#.NET解析XML(使用属性控制 XML 序列化)
- 使用XStream注解实现Java对象与XML互相转换的代码示例---转自:http://www.blogjava.net/bolo
- c# XML和实体类之间相互转换(序列化和反序列化)
- .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程
- C# .NET利用Newtonsoft.Json来序列化和反序列化对象
- Asp.net 2.0 用C# 创建 PDF文件[引用] (示例代码下载)
- Asp.net 2.0 装载XML文件中数据到Excel文件中(示例代码下载)
- Asp.Net(C#)利用XPath解析XML文档示例
- c# Xml反序列化示例
- C#序列化与反序列化对象XML和JSON 详细代码工具
- C#.NET解析XML(使用属性控制 XML 序列化)
- C#序列化和反序列化代码总结
- Asp.net 2.0 用C# 创建 PDF文件[引用] (示例代码下载)
- asp.net(c#) static关键字用法小结+示例代码-NET编程
- Asp.net 2.0 装载XML文件中数据到Excel文件中(示例代码下载)
- C# XmlSerializer 对象的Xml序列化和反序列化