• xml处理类 xmlAdapter


    public static class XmlSerializeAdapter
       {
           public static T Deserialize<T>(XmlNode node) where T : class
           {
               return new XmlSerializer(typeof(T)).Deserialize(new XmlNodeReader(node)) as T;
           }
     
          
     
           public static IEnumerable<T> Deserialize<T>(XmlNodeList nodes) where T : class
           {
               List<T> results = new List<T>();
               XmlSerializer serializer = new XmlSerializer(typeof(T));
               foreach (XmlNode node in nodes)
               {
                   results.Add(serializer.Deserialize(new XmlNodeReader(node)) as T);
               }
               return results;
           }
     
           public static object Deserialize(Type t, XmlNode node)
           {
               return new XmlSerializer(t).Deserialize(new XmlNodeReader(node));
           }
     
           public static IEnumerable<object> Deserialize(Type t, XmlNodeList nodes)
           {
               List<object> results = new List<object>();
               XmlSerializer serializer = new XmlSerializer(t);
               foreach (XmlNode node in nodes)
               {
                   results.Add(serializer.Deserialize(new XmlNodeReader(node)));
               }
               return results;
           }
     
           public static object Deserialize(string type_name, XmlNode node)
           {
               return new XmlSerializer(Type.GetType(type_name)).Deserialize(new XmlNodeReader(node));
           }
     
           public static IEnumerable<object> Deserialize(string type_name, XmlNodeList nodes)
           {
               List<object> results = new List<object>();
               XmlSerializer serializer = new XmlSerializer(Type.GetType(type_name));
               foreach (XmlNode node in nodes)
               {
                   results.Add(serializer.Deserialize(new XmlNodeReader(node)));
               }
               return results;
           }
     
           public static string Serialize(object o)
           {
               try
               {
                   String XmlizedString = null; 
     
                   MemoryStream memoryStream = new MemoryStream();
                   XmlSerializer xs = new XmlSerializer(o.GetType());
     
                   XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
     
                   xs.Serialize(xmlTextWriter, o);
     
                   memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
     
                   XmlizedString = Utils.UTF8ByteArrayToString(memoryStream.ToArray());
     
                   return XmlizedString;
     
               } 
               catch(Exception ex)
               {
                   throw ex;
               }
     
           }
     
           public static T DeserializeInheritsObject<T, V>(XmlNode node)
               where T : class
               where V : class
           {
               XmlAttributeOverrides attrOverrides = new XmlAttributeOverrides();
               XmlAttributes attrs = new XmlAttributes();
     
               // Creates an XmlElementAttribute to override the 
               // field that returns Book objects. The overridden field
               // returns Expanded objects instead.
               XmlElementAttribute attr = new XmlElementAttribute();
               attr.ElementName = typeof(T).Name;
               attr.Type = typeof(T);
     
               // Adds the XmlElementAttribute to the collection of objects.
               attrs.XmlElements.Add(attr);
     
               attrOverrides.Add(typeof(V), attrs);
     
               // Creates the XmlSerializer using the XmlAttributeOverrides.
     
               XmlSerializer xs = new XmlSerializer(typeof(T), attrOverrides);
               return xs.Deserialize(new XmlNodeReader(node)) as T;
     
           }
     
           public static string SerializeInheritsObject<T>(object o)
               where T : class
           {
               try
               {
     
                   // Each overridden field, property, or type requires 
                   // an XmlAttributes instance.
                   XmlAttributes attrs = new XmlAttributes();
     
                   // Creates an XmlElementAttribute instance to override the 
                   // field that returns Book objects. The overridden field
                   // returns Expanded objects instead.
                   XmlElementAttribute attr = new XmlElementAttribute();
                   attr.ElementName = o.GetType().Name;
                   attr.Type = o.GetType();
     
                   // Adds the element to the collection of elements.
                   attrs.XmlElements.Add(attr);
     
                   // Creates the XmlAttributeOverrides instance.
                   XmlAttributeOverrides attrOverrides = new XmlAttributeOverrides();
     
                   // Adds the type of the class that contains the overridden 
                   // member, as well as the XmlAttributes instance to override it 
                   // with, to the XmlAttributeOverrides.
                   attrOverrides.Add(typeof(T), attrs);
     
                   // Creates the XmlSerializer using the XmlAttributeOverrides.
     
                   String XmlizedString = null;
     
                   XmlSerializer xs = new XmlSerializer(o.GetType(), attrOverrides);
     
     
     
                   MemoryStream memoryStream = new MemoryStream(); ;
     
     
     
     
                   XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
     
                   xs.Serialize(xmlTextWriter, o);
     
                   memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
     
                   XmlizedString = Utils.UTF8ByteArrayToString(memoryStream.ToArray());
     
                   return XmlizedString;
     
               }
               catch(Exception ex)
               {
     
                   throw ex;
               }
     
           }
       }
  • 相关阅读:
    Redis源码剖析之字典(dict)
    Redis源码剖析之跳表(skiplist)
    面试题精选:神奇的斐波那契数列
    awk实现类sql的join操作
    [翻译]CAP理论及其证明
    今年是冷冬?我爬了北京10年的气温,哟 还真是!
    python 等间隔抽取一定数量的数据
    操作系统-第十章-文件系统
    操作系统-第九章-虚拟内存管理
    操作系统-第八章-内存管理
  • 原文地址:https://www.cnblogs.com/BungeeJumping/p/5556925.html
Copyright © 2020-2023  润新知