XML和实体序列化和反序列化

  近来的项目中用到了序列化就抽空学习了一下,拿出来给大家分享一下:

  类为我们提供了自己对象串行化(Serialize)和反串行化(Deserialize)的xml的方法,该类可以序列化的内容:
    公共类的公共读写字段或者属性
    XmlElement对象
    XmlNode对象
    Dataset对象
    实现了Icollection 或IEnumerable的类

  该类在设计中有一个设计需求:
    需要被序列化的类要提供一个空参数的构造函数,否则运行时会出现异常

  在开发过程中可能会有很多地方要用到对象和XML相互转化,在此提供一个通用的类,提供泛类型的支持。

 /// <summary>    /// 序列化帮助类    /// </summary>    public class SHelper    {        /// <summary>        /// 对象到XML-----泛类型        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="obj"></param>        /// <returns></returns>        public static string SaveXmlFromObj<T>(T obj)        {            if (obj == null) return null;            XmlSerializer serializer = new XmlSerializer(typeof(T));            MemoryStream stream = new MemoryStream();            XmlTextWriter xtw = new XmlTextWriter(stream, Encoding.UTF8);            xtw.Formatting = Formatting.Indented;            try            {                serializer.Serialize(stream, obj);            }            catch { return null; }            stream.Position = 0;            string returnStr = string.Empty;            using (StreamReader sr = new StreamReader(stream, Encoding.UTF8))            {                string line = "";                while ((line = sr.ReadLine()) != null)                {                    returnStr += line;                }            }            return returnStr;        }        /// <summary>        /// XML到反序列化到对象----支持泛类型        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="data"></param>        /// <returns></returns>        public static T LoadObjFromXML<T>(string data)        {            using (MemoryStream stream = new MemoryStream())            {                using (StreamWriter sw = new StreamWriter(stream, Encoding.UTF8))                {                    sw.Write(data);                    sw.Flush();                    stream.Seek(0, SeekOrigin.Begin);                    XmlSerializer serializer = new XmlSerializer(typeof(T));                    try                    {                        return ((T)serializer.Deserialize(stream));                    }                    catch { return default(T); }                }            }        }    }

NET技术XML和实体序列化和反序列化,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。