欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 中對(duì)象序列化XML的方法

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

今天我們來(lái)看一下在C#中對(duì)象序列化XML的方法。

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

不多說(shuō),直接開始。

首先先說(shuō)怎么用

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

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);

下面來(lái)看封裝類

public class XmlSerializeHelper
  {
    //對(duì)象轉(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í)體對(duì)象序列化成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字符為對(duì)象,默認(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字符為對(duì)象 
    /// </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# 中對(duì)象序列化XML的方法的詳細(xì)內(nèi)容,更多關(guān)于c# 對(duì)象序列化XML的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Unity實(shí)現(xiàn)物體運(yùn)動(dòng)軌跡的繪制

    Unity實(shí)現(xiàn)物體運(yùn)動(dòng)軌跡的繪制

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)物體運(yùn)動(dòng)軌跡的繪制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C#判斷某程序是否運(yùn)行的方法

    C#判斷某程序是否運(yùn)行的方法

    這篇文章主要介紹了C#判斷某程序是否運(yùn)行的方法,代碼結(jié)構(gòu)簡(jiǎn)單功能實(shí)用,需要的朋友可以參考下
    2014-09-09
  • C# 抽象類,抽象屬性,抽象方法(實(shí)例講解)

    C# 抽象類,抽象屬性,抽象方法(實(shí)例講解)

    下面小編就為大家分享一篇C# 抽象類,抽象屬性,抽象方法的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • C# 中的 IReadOnlyDictionary 和 IReadOnlyList實(shí)例詳解

    C# 中的 IReadOnlyDictionary 和 IReadOnlyLis

    C# 中的IReadOnlyDictionary和IReadOnlyList是接口,用于表示只讀的字典和只讀的列表,這些接口提供了對(duì)集合的只讀訪問權(quán)限,即不允許對(duì)集合進(jìn)行修改操作,這篇文章主要介紹了C# 中的 IReadOnlyDictionary 和 IReadOnlyList實(shí)例詳解,需要的朋友可以參考下
    2024-03-03
  • c# 組合模式

    c# 組合模式

    組合模式:將對(duì)象組合成樹形結(jié)構(gòu)以表示‘部分-整體’的層次結(jié)構(gòu)。組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。需求中式體現(xiàn)部分與整體層次的結(jié)構(gòu)時(shí),統(tǒng)一地使用組合對(duì)象中的所有對(duì)象時(shí),應(yīng)該考慮使用組合模式
    2012-10-10
  • C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量二

    C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量二

    這篇文章繼續(xù)介紹了C#數(shù)據(jù)類型和變量,是對(duì)上一篇文章的補(bǔ)充,希望對(duì)大家的學(xué)習(xí)有所幫助。
    2015-10-10
  • C#開發(fā)微信門戶及應(yīng)用(3) 文本消息和圖文消息應(yīng)答

    C#開發(fā)微信門戶及應(yīng)用(3) 文本消息和圖文消息應(yīng)答

    這篇文章主要為大家詳細(xì)介紹了C#開發(fā)微信門戶及應(yīng)用第二篇,微信文本消息和圖文消息的應(yīng)答,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#調(diào)用FFplay實(shí)現(xiàn)播放視頻功能

    C#調(diào)用FFplay實(shí)現(xiàn)播放視頻功能

    這篇文章主要為大家詳細(xì)介紹了C#如何調(diào)用FFplay實(shí)現(xiàn)播放視頻功能,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • 區(qū)分WCF與WebService的異同、優(yōu)勢(shì)

    區(qū)分WCF與WebService的異同、優(yōu)勢(shì)

    這篇文章主要幫助大家區(qū)分WCF與WebService的異同、優(yōu)勢(shì),分為三大方面進(jìn)行研究學(xué)習(xí),感興趣的小伙伴們可以參考一下
    2016-03-03
  • c# WPF實(shí)現(xiàn)Windows資源管理器(附源碼)

    c# WPF實(shí)現(xiàn)Windows資源管理器(附源碼)

    這篇文章主要介紹了c# WPF實(shí)現(xiàn)Windows資源管理器的示例(附源碼),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03

最新評(píng)論