zoukankan      html  css  js  c++  java
  • xml序列化方式

    public static class MySerializeXmlHelper
    {
    static MySerializeXmlHelper() { }

    private static object _lock = new object();

    #region 泛型支持

    //为不支持动态参数的老接口保留,请勿删除此方法
    /// <summary>
    /// 使用XmlSerializer序列化对象
    /// </summary>
    /// <typeparam name=“T“>需要序列化的对象类型,不必须声明[Serializable]特征</typeparam>
    /// <param name=“obj“>需要序列化的对象</param>
    /// <returns></returns>
    public static string SerializeToXmlText<T>(T obj)
    {
    Type t = obj.GetType();
    return SerializeToXmlText(obj, t);
    }
    /// <summary>
    /// 使用XmlSerializer序列化对象
    /// </summary>
    /// <typeparam name=“T“>需要序列化的对象类型,不必须声明[Serializable]特征</typeparam>
    /// <param name=“obj“>需要序列化的对象</param>
    /// <param name="ignoreNamespace">是否忽略命名空间(默认true)</param>
    /// <returns></returns>
    public static string SerializeToXmlText<T>(T obj, bool ignoreNamespace = true)
    {
    //Type t = typeof(T);
    Type t = obj.GetType();
    return SerializeToXmlText(obj, t, ignoreNamespace);
    }

    //为不支持动态参数的老接口保留,请勿删除此方法
    /// <summary>
    /// 使用XmlSerializer序列化对象
    /// </summary>
    /// <typeparam name=“T“>需要序列化的对象类型,不必须声明[Serializable]特征</typeparam>
    /// <param name=“obj“>需要序列化的对象</param>
    /// <param name="filePath"></param>
    public static void SerializeFile<T>(T obj, string filePath)
    {
    //Type t = typeof(T);
    Type t = obj.GetType();
    SerializeFile(obj, t, filePath);
    }
    /// <summary>
    /// 使用XmlSerializer序列化对象
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="obj"></param>
    /// <param name="filePath"></param>
    public static void SerializeFile<T>(T obj, string filePath, bool ignoreNamespace = true)
    {
    //Type t = typeof(T);
    Type t = obj.GetType();
    SerializeFile(obj, t, filePath, ignoreNamespace);
    }

    /// <summary>
    /// 使用XmlSerializer反序列化对象
    /// </summary>
    /// <param name=“xmlOfObject“>需要反序列化的xml字符串</param>
    public static T DeserializeFromXmlText<T>(string xmlOfObject)
    {
    Type t = typeof(T);
    return (T)DeserializeFromXmlText(xmlOfObject, t);
    }

    /// <summary>
    /// 使用XmlSerializer反序列化对象
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="filePath"></param>
    /// <returns></returns>
    public static T DeSerializeFile<T>(string filePath)
    {
    Type t = typeof(T);
    return (T)DeSerializeFile(filePath, t);
    }

    #endregion

    #region 非泛型支持

    //为不支持动态参数的老接口保留,请勿删除此方法
    /// <summary>
    /// 使用XmlSerializer序列化对象(不必须声明[Serializable]特征)
    /// </summary>
    /// <param name="obj"></param>
    /// <param name="t"></param>
    /// <returns></returns>
    public static string SerializeToXmlText(object obj, Type t)
    {
    return SerializeToXmlText(obj, t, true);
    }
    /// <summary>
    /// 使用XmlSerializer序列化对象(不必须声明[Serializable]特征)
    /// </summary>
    /// <param name="obj"></param>
    /// <param name="t"></param>
    /// <param name="ignoreNamespace"></param>
    /// <returns>序列化的xml字符串</returns>
    public static string SerializeToXmlText(object obj, Type t, bool ignoreNamespace =true)
    {
    using (MemoryStream ms = new MemoryStream())
    {
    XmlSerializer serializer = new XmlSerializer(t);
    if (ignoreNamespace)
    {
    //使其不生成命名空间属性
    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
    ns.Add("", "");
    serializer.Serialize(ms, obj, ns);
    }
    else
    {
    serializer.Serialize(ms, obj);
    }

    ms.Seek(0, SeekOrigin.Begin);
    using (StreamReader reader = new StreamReader(ms, Encoding.UTF8))
    {
    return reader.ReadToEnd();
    }
    }
    }

    //为不支持动态参数的老接口保留,请勿删除此方法
    /// <summary>
    /// 使用XmlSerializer序列化对象(不必须声明[Serializable]特征)
    /// </summary>
    /// <param name="obj"></param>
    /// <param name="filePath"></param>
    /// <param name="t"></param>
    public static void SerializeFile(object obj, Type t, string filePath)
    {
    SerializeFile(obj, t, filePath, true);
    }
    /// <summary>
    /// 使用XmlSerializer序列化对象(不必须声明[Serializable]特征)
    /// </summary>
    /// <param name="obj"></param>
    /// <param name="filePath"></param>
    /// <param name="t"></param>
    /// <param name="ignoreNamespace"></param>
    public static void SerializeFile(object obj, Type t, string filePath, bool ignoreNamespace = true)
    {
    string temp = SerializeToXmlText(obj, t, ignoreNamespace);
    using (StreamWriter sw = File.CreateText(filePath))
    {
    sw.WriteLine(temp);
    sw.Close();
    }
    }

    /// <summary>
    /// 使用XmlSerializer反序列化对象
    /// </summary>
    /// <param name=“xmlOfObject“>需要反序列化的xml字符串</param>
    /// <param name="t"></param>
    /// <returns></returns>
    public static object DeserializeFromXmlText(string xmlOfObject, Type t)
    {
    using (MemoryStream ms = new MemoryStream())
    {
    using (StreamWriter sr = new StreamWriter(ms, Encoding.UTF8))
    {
    sr.Write(xmlOfObject);
    sr.Flush();
    ms.Seek(0, SeekOrigin.Begin);
    XmlSerializer serializer = new XmlSerializer(t);
    return serializer.Deserialize(ms);
    }
    }
    }

    /// <summary>
    /// 使用XmlSerializer反序列化对象
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="filePath"></param>
    /// <returns></returns>
    public static object DeSerializeFile(string filePath, Type t)
    {
    string temp = File.ReadAllText(filePath, Encoding.UTF8);
    return DeserializeFromXmlText(temp, t);
    }

    #endregion
    }

  • 相关阅读:
    silverlight click 事件委托是 RoutedEventHandler
    silverlight 2 系统对话框
    CSLA.Net 3.0.5 项目管理示例 UI ProjectEdit.aspx
    委托和事件 委托
    Visual Studio 项目模板、文件模板、代码段和环境设置
    C# 打好基础图文详解
    Hession 基础应用
    ADO.NET Entity Framework 概述
    CSLA.Net 3.0.5 项目管理示例 业务基类 Project.cs
    关于使用 Visual Studio 开发环境收费的问题,博友们谁有经验分享一下。
  • 原文地址:https://www.cnblogs.com/zhtbk/p/4535432.html
Copyright © 2011-2022 走看看