zoukankan      html  css  js  c++  java
  • [序列化] SerializeHelper--序列化操作帮助类 (转载)

    点击下载 SerializeHelper.zip

    这个类是关于加密,解密的操作,文件的一些高级操作
    1.XML序列化
    2.Json序列化
    3.SoapFormatter序列化
    4.BinaryFormatter序列化
    看下面代码吧

    /// <summary>
    /// 类说明:Assistant
    /// 编 码 人:苏飞
    /// 联系方式:361983679  
    /// 更新网站:[url=http://www.cckan.net/thread-655-1-1.html]http://www.cckan.net/thread-655-1-1.html[/url]
    /// </summary>
    using System;
    using System.IO;
    using System.Text;
    using System.Xml;
    using System.Xml.Serialization;
    //using System.Runtime.Serialization.Json;
    using System.Runtime.Serialization.Formatters.Soap;
    using System.Runtime.Serialization.Formatters.Binary;
     
    namespace DotNet.Utilities
    {
        public class SerializeHelper
        {
            public SerializeHelper()
            { }
     
            #region XML序列化
            /// <summary>
            /// 文件化XML序列化
            /// </summary>
            /// <param name="obj">对象</param>
            /// <param name="filename">文件路径</param>
            public static void Save(object obj, string filename)
            {
                FileStream fs = null;
                try
                {
                    fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
                    XmlSerializer serializer = new XmlSerializer(obj.GetType());
                    serializer.Serialize(fs, obj);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (fs != null) fs.Close();
                }
            }
     
            /// <summary>
            /// 文件化XML反序列化
            /// </summary>
            /// <param name="type">对象类型</param>
            /// <param name="filename">文件路径</param>
            public static object Load(Type type, string filename)
            {
                FileStream fs = null;
                try
                {
                    fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                    XmlSerializer serializer = new XmlSerializer(type);
                    return serializer.Deserialize(fs);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (fs != null) fs.Close();
                }
            }
     
            /// <summary>
            /// 文本化XML序列化
            /// </summary>
            /// <param name="item">对象</param>
            public string ToXml<T>(T item)
            {
                XmlSerializer serializer = new XmlSerializer(item.GetType());
                StringBuilder sb = new StringBuilder();
                using (XmlWriter writer = XmlWriter.Create(sb))
                {
                    serializer.Serialize(writer, item);
                    return sb.ToString();
                }
            }
     
            /// <summary>
            /// 文本化XML反序列化
            /// </summary>
            /// <param name="str">字符串序列</param>
            public T FromXml<T>(string str)
            {
                XmlSerializer serializer = new XmlSerializer(typeof(T));
                using (XmlReader reader = new XmlTextReader(new StringReader(str)))
                {
                    return (T)serializer.Deserialize(reader);
                }
            }
            #endregion
     
            #region Json序列化
            /// <summary>
            /// JsonSerializer序列化
            /// </summary>
            /// <param name="item">对象</param>
            //public string ToJson<T>(T item)
            //{
            //    DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType());
            //    using (MemoryStream ms = new MemoryStream())
            //    {
            //        serializer.WriteObject(ms, item);
            //        return Encoding.UTF8.GetString(ms.ToArray());
            //    }
            //}
     
            ///// <summary>
            ///// JsonSerializer反序列化
            ///// </summary>
            ///// <param name="str">字符串序列</param>
            //public T FromJson<T>(string str) where T : class
            //{
            //    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
            //    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
            //    {
            //        return serializer.ReadObject(ms) as T;
            //    }
            //}
            #endregion
     
            #region SoapFormatter序列化
            /// <summary>
            /// SoapFormatter序列化
            /// </summary>
            /// <param name="item">对象</param>
            public string ToSoap<T>(T item)
            {
                SoapFormatter formatter = new SoapFormatter();
                using (MemoryStream ms = new MemoryStream())
                {
                    formatter.Serialize(ms, item);
                    ms.Position = 0;
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(ms);
                    return xmlDoc.InnerXml;
                }
            }
     
            /// <summary>
            /// SoapFormatter反序列化
            /// </summary>
            /// <param name="str">字符串序列</param>
            public T FromSoap<T>(string str)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(str);
                SoapFormatter formatter = new SoapFormatter();
                using (MemoryStream ms = new MemoryStream())
                {
                    xmlDoc.Save(ms);
                    ms.Position = 0;
                    return (T)formatter.Deserialize(ms);
                }
            }
            #endregion
     
            #region BinaryFormatter序列化
            /// <summary>
            /// BinaryFormatter序列化
            /// </summary>
            /// <param name="item">对象</param>
            public string ToBinary<T>(T item)
            {
                BinaryFormatter formatter = new BinaryFormatter();
                using (MemoryStream ms = new MemoryStream())
                {
                    formatter.Serialize(ms, item);
                    ms.Position = 0;
                    byte[] bytes = ms.ToArray();
                    StringBuilder sb = new StringBuilder();
                    foreach (byte bt in bytes)
                    {
                        sb.Append(string.Format("{0:X2}", bt));
                    }
                    return sb.ToString();
                }
            }
     
            /// <summary>
            /// BinaryFormatter反序列化
            /// </summary>
            /// <param name="str">字符串序列</param>
            public T FromBinary<T>(string str)
            {
                int intLen = str.Length / 2;
                byte[] bytes = new byte[intLen];
                for (int i = 0; i < intLen; i++)
                {
                    int ibyte = Convert.ToInt32(str.Substring(i * 2, 2), 16);
                    bytes[i] = (byte)ibyte;
                }
                BinaryFormatter formatter = new BinaryFormatter();
                using (MemoryStream ms = new MemoryStream(bytes))
                {
                    return (T)formatter.Deserialize(ms);
                }
            }
            #endregion
        }
    }
  • 相关阅读:
    Java实现 计蒜客 拯救行动
    Java实现 计蒜客 拯救行动
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 173 二叉搜索树迭代器
    Java实现 LeetCode 173 二叉搜索树迭代器
    Visual Studio的SDK配置
    怎样使用CMenu类
    mfc menu用法一
  • 原文地址:https://www.cnblogs.com/lizeyan/p/3635767.html
Copyright © 2011-2022 走看看