C#中xml文件和对象的序列化与反序列化

来源:互联网 发布:mac finder 当前路径 编辑:程序博客网 时间:2024/05/17 02:57
 
为什么要做序列化和反序列化?
.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
0 0
原创粉丝点击