zoukankan      html  css  js  c++  java
  • C# XML 序列化帮助类

        /// <summary>
        ///     Xml helper class
        /// </summary>
        public static class XmlHelper
        {
            #region 序列化
    
            /// <summary>
            ///     XML Serialize
            /// </summary>
            /// <param name="obj"></param>
            /// <param name="encoding"></param>
            /// <returns></returns>
            public static string Serialize<T>(T obj, Encoding encoding = null)
            {
                return Serialize(obj, typeof(T), encoding);
            }
    
            /// <summary>
            ///     XML Serialize
            /// </summary>
            /// <param name="obj"></param>
            /// <param name="type"></param>
            /// <param name="encoding"></param>
            /// <returns></returns>
            public static string Serialize(object obj, Type type, Encoding encoding = null)
            {
                return Serialize(obj, type, encoding, null);
            }
    
            /// <summary>
            ///     XML Serialize
            /// </summary>
            /// <param name="obj"></param>
            /// <param name="type"></param>
            /// <param name="encoding"></param>
            /// <param name="types"></param>
            /// <returns></returns>
            public static string Serialize(object obj, Type type, Encoding encoding, params Type[] types)
            {
                var serializer = new XmlSerializer(type, types);
                var sb = new StringBuilder();
    
                using (var writer = new EncodingStringWriter(sb, encoding))
                {
                    var namespaces = new XmlSerializerNamespaces();
                    namespaces.Add("", "");
                    serializer.Serialize(writer, obj, namespaces);
                    return sb.ToString();
                }
            }
    
            /// <summary>
            ///     XML Deserialize
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="xml"></param>
            /// <returns></returns>
            public static T Deserialize<T>(string xml)
            {
                return Deserialize<T>(xml, typeof(T));
            }
    
            /// <summary>
            ///     XML Deserialize
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="xml"></param>
            /// <param name="type"></param>
            /// <returns></returns>
            public static T Deserialize<T>(string xml, Type type)
            {
                return Deserialize<T>(xml, type, null);
            }
    
            /// <summary>
            ///     XML Deserialize
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="xml"></param>
            /// <param name="type"></param>
            /// <param name="types"></param>
            /// <returns></returns>
            public static T Deserialize<T>(string xml, Type type, params Type[] types)
            {
                var serializer = new XmlSerializer(type, types);
                using (TextReader reader = new StringReader(xml))
                {
                    var obj = (T)serializer.Deserialize(reader);
                    return obj;
                }
            }
    
            #endregion 序列化
        }
    
        public class EncodingStringWriter : StringWriter
        {
            public EncodingStringWriter(StringBuilder stringBuilder, Encoding encoding = null) : base(stringBuilder)
            {
                Encoding = encoding ?? Encoding.UTF8;
            }
    
            public override Encoding Encoding { get; }
        }
  • 相关阅读:
    Java编程之路相关书籍
    JAVA中的Random()函数
    在鼠标右键上加入使用notepad++编辑
    更改IE浏览器的收藏夹位置
    Java四类八种数据类型
    成为Java顶尖程序员 ,看这11本书就够了
    面向对象(多异常的声明与处理)
    面向对象(异常try-catch)
    面向对象(异常概述)
    面向对象(局部内部类和匿名内部类)
  • 原文地址:https://www.cnblogs.com/Robbery/p/xmlhelper.html
Copyright © 2011-2022 走看看