zoukankan      html  css  js  c++  java
  • 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;
               }
     
           }
       }
  • 相关阅读:
    Asp.net相关知识和经验的碎片化记录
    JavaScript相关知识和经验的碎片化记录
    HTML相关知识和经验的碎片化记录
    CSS相关知识和经验的碎片化记录
    C# 实现文件(夹)在ftp服务器间的同步【无需将文件(夹)保存到本地】
    js中call、apply、bind的用法
    js中的数组对象排序
    CSS3图片轮播效果
    HTML5 canvas制作童年的回忆大风车
    js实现滑动器效果
  • 原文地址:https://www.cnblogs.com/BungeeJumping/p/5556925.html
Copyright © 2011-2022 走看看