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
  • 相关阅读:
    Leetcode总结之Tree
    Leetcode总结之DFS
    Leetcode总结之Backtracking
    策略模式(设计模式_02)
    面向对象思想设计_计算器小程序(设计模式入门篇_01)
    Android GridView 滑动条设置一直显示状态
    dp暑假专题 训练记录
    dp入门 专题记录 2017-7-26
    dp问题 -挑战例题 2017-7-24
    贪心思维 专题记录 2017-7-21
  • 原文地址:https://www.cnblogs.com/hugeboke/p/11575208.html
Copyright © 2011-2022 走看看