zoukankan      html  css  js  c++  java
  • 序列化与反序列化

     1  #region 序列化
     2         public static string Serializer<T>(T t)
     3         {
     4             //StringBuilder sb = new StringBuilder();
     5             using (MemoryStream ms = new MemoryStream())
     6             {
     7                 using (System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(ms, Encoding.UTF8))
     8                 {
     9                     XmlSerializerFactory xmlSerializerFactory = new XmlSerializerFactory();
    10                     string name = t.GetType().Name;
    11 
    12                     XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
    13                     //Add an empty namespace and empty value
    14                     ns.Add("", "");
    15 
    16                     XmlSerializer xmlSerializer = xmlSerializerFactory.CreateSerializer(typeof(T));
    17 
    18                     xmlSerializer.Serialize(xw, t);
    19 
    20                     // 去除BOM
    21                     byte[] buffer = ms.ToArray();
    22 
    23                     if (buffer.Length <= 3)
    24                     {
    25                         return Encoding.UTF8.GetString(buffer);
    26                     }
    27                     byte[] bomBuffer = new byte[] { 0xef, 0xbb, 0xbf };
    28                     if (buffer[0] == bomBuffer[0] && buffer[1] == bomBuffer[1] && buffer[2] == bomBuffer[2])
    29                     {
    30                         return Encoding.UTF8.GetString(buffer, 3, buffer.Length - 3);
    31                     }
    32                     return Encoding.UTF8.GetString(buffer);
    33                 }
    34             }
    35         }
    36         #endregion
    37 
    38         #region 反序列化
    39         public static T Deserialize<T>(string xml)
    40         {
    41             using (StringReader reader = new StringReader(xml))
    42             {
    43                 XmlSerializer xs = new XmlSerializer(typeof(T));
    44                 T obj = (T)xs.Deserialize(reader);
    45                 return obj;
    46             }
    47         }
    48         #endregion
  • 相关阅读:
    不得不爱开源 Wijmo jQuery 插件集(6)【Popup】(附页面展示和源码)
    遗漏的知识点
    初识函数
    ==和is的区别 以及编码和解码
    函数的动态参数 及函数嵌套
    基本数据类型补充、set集合、深浅拷贝
    文件操作
    基本数据类型之“字典”
    建立自己的Servlet
    还原误删数据笔记
  • 原文地址:https://www.cnblogs.com/hugeboke/p/11575208.html
Copyright © 2011-2022 走看看