最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 中對象序列化XML的方法

 更新時間:2021年03月03日 08:35:14   作者:王月半子  
這篇文章主要介紹了C# 中對象序列化XML的方法,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下

今天我們來看一下在C#中對象序列化XML的方法。

不得不說,在這個Json橫行的年代,XML雖然式微,但也的確是一股子清流。(個人感覺)

不多說,直接開始。

首先先說怎么用

需要用到的是這兩個命名空間(主要)

using System.Xml;
using System.Xml.Serialization;

然后序列化和反序列化的方式和Json一樣。(后面提供封裝方法)

string result = XmlSerializeHelper.Serialize<test>(new test
      {
        name = "Seven",
        cardId = "663927",
        age = 15,
        currentTime = DateTime.Now
      });
      Console.WriteLine(result);
      test test2 = XmlSerializeHelper.DeSerialize<test>(result);

下面來看封裝類

public class XmlSerializeHelper
  {
    //對象轉(zhuǎn)XML
    public static string ObjToXml(object obj)
    {
      using (MemoryStream Stream = new MemoryStream())
      {
        XmlSerializer xml = new XmlSerializer(obj.GetType());
        xml.Serialize(Stream, obj);
        Stream.Position = 0;
        StreamReader sr = new StreamReader(Stream);
        return sr.ReadToEnd();
      }

    }

    public static string Serialize<T>(T obj)
    {
      return Serialize<T>(obj, Encoding.UTF8);
    }
    /// <summary> 
    /// 實(shí)體對象序列化成xml字符串 
    /// </summary> 
    /// <typeparam name="T"></typeparam> 
    /// <param name="obj"></param> 
    /// <returns></returns> 
    public static string Serialize<T>(T obj, Encoding encoding)
    {
      try
      {
        if (obj == null)
        {
          throw new ArgumentNullException("obj");
        }
        var ser = new XmlSerializer(obj.GetType());
        using (var ms = new MemoryStream())
        {
          using (var writer = new XmlTextWriter(ms, encoding))
          {
            writer.Formatting = Formatting.Indented;
            ser.Serialize(writer, obj);
          }
          var xml = encoding.GetString(ms.ToArray());
          xml = xml.Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", "");
          xml = xml.Replace("xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"", "");
          xml = Regex.Replace(xml, @"\s{2}", "");
          xml = Regex.Replace(xml, @"\s{1}/>", "/>");
          return xml;
        }
      }
      catch (Exception ex)
      {
        throw ex;
      }
    }
    /// <summary> 
    /// 反序列化xml字符為對象,默認(rèn)為Utf-8編碼 
    /// </summary> 
    /// <typeparam name="T"></typeparam> 
    /// <param name="xml"></param> 
    /// <returns></returns> 
    public static T DeSerialize<T>(string xml) where T : new()
    {
      return DeSerialize<T>(xml, Encoding.UTF8);
    }
    /// <summary> 
    /// 反序列化xml字符為對象 
    /// </summary> 
    /// <typeparam name="T"></typeparam> 
    /// <param name="xml"></param> 
    /// <param name="encoding"></param> 
    /// <returns></returns> 
    public static T DeSerialize<T>(string xml, Encoding encoding) where T : new()
    {
      try
      {
        var mySerializer = new XmlSerializer(typeof(T));
        using (var ms = new MemoryStream(encoding.GetBytes(xml)))
        {
          using (var sr = new StreamReader(ms, encoding))
          {
            return (T)mySerializer.Deserialize(sr);
          }
        }
      }
      catch (Exception e)
      {
        return default(T);
      }
    }
  }

Class Of XmlSerializeHelper

好了,板磚要緊,先到這里。

以上就是C# 中對象序列化XML的方法的詳細(xì)內(nèi)容,更多關(guān)于c# 對象序列化XML的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

富川| 瓦房店市| 郯城县| 聂荣县| 名山县| 茶陵县| 沁源县| 新乡县| 奇台县| 曲麻莱县| 勐海县| 襄城县| 油尖旺区| 五华县| 平顺县| 武冈市| 申扎县| 长岭县| 蚌埠市| 沧源| 浦北县| 大化| 嵊泗县| 石屏县| 乐平市| 南华县| 五峰| 恭城| 天台县| 漳平市| 常宁市| 苍溪县| 茶陵县| 滨州市| 邹城市| 奉节县| 沾益县| 延庆县| 黑山县| 五家渠市| 泾源县|