C#中xml文件和对象的序列化与反序列化
2013-12-15 19:08
405 查看
为什么要做序列化和反序列化?
.Net程序执行时,对象都驻留在内存中;内存中的对象如果需要传递给其他系统使用;或者在关机时需要保存下来以便下次再次启动程序使用就需要序列化和反序列化。
System.Xml.Serialization类为我们提供了自己对象串行化(Serialize)和反串行化(Deserialize)的xml的方法,该类可以序列化的内容:
公共类的公共读写字段或者属性
XmlElement对象
XmlNode对象
Dataset对象
实现了Icollection 或IEnumerable的类
XML序列化和反序列化 封装类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Data; using System.Xml; using System.Xml.Serialization; /**//// <summary> /// Xml序列化与反序列化 /// </summary> public class XmlUtil { 反序列化#region 反序列化 /**//// <summary> /// 反序列化 /// </summary> /// <param name="type">类型</param> /// <param name="xml">XML字符串</param> /// <returns></returns> public static object Deserialize(Type type, string xml) { try { using (StringReader sr = new StringReader(xml)) { XmlSerializer xmldes = new XmlSerializer(type); return xmldes.Deserialize(sr); } } catch (Exception e) { return null; } } /**//// <summary> /// 反序列化 /// </summary> /// <param name="type"></param> /// <param name="xml"></param> /// <returns></returns> public static object Deserialize(Type type, Stream stream) { XmlSerializer xmldes = new XmlSerializer(type); return xmldes.Deserialize(stream); } #endregion 序列化#region 序列化 /**//// <summary> /// 序列化 /// </summary> /// <param name="type">类型</param> /// <param name="obj">对象</param> /// <returns></returns> public static string Serializer(Type type, object obj) { MemoryStream Stream = new MemoryStream(); XmlSerializer xml = new XmlSerializer(type); try { //序列化对象 xml.Serialize(Stream, obj); } catch (InvalidOperationException) { throw; } Stream.Position = 0; StreamReader sr = new StreamReader(Stream); string str = sr.ReadToEnd(); sr.Dispose(); Stream.Dispose(); return str; } #endregion }
参考资料: C# xml和对象的序列化与反序列化 http://www.studyofnet.com/news/253.html
相关文章推荐
- Android-Parcelable理解与使用(对象序列化)
- 黑马程序员_对象的序列化
- 【Java】IO操作之对象序列化及反序列化
- Java上路19-I/O-常用类
- java 学习笔记11之对象序列化
- java 关于中文字的输出 输入 和文件操作(对象序列化)
- Java将对象系列化成十六进制的字符串以及将十六机制的字符串反序列化成对象
- Java 对象序列化
- IO流,对象序列化
- Java底层(一) - Java中的对象序列化
- [零基础学JAVA]Java SE应用部分-30.Java IO操作(04) 推荐
- JAVA IO - 将对象压缩到文件和将对象从压缩文件反序列化。
- Java 对象序列化
- Java中的对象序列化
- C++ / QT 对象序列化(Object Serialization)的实现
- Java对象序列化学习与运用
- 对象序列化 ObjectInputStream ObjectOutputStream
- 黑马程序员-->16_输入与输出I/O(提升篇)
- Java对象的序列化与反序列化
- MessagePack二进制序列化动态库的使用