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

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

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

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

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

不多說,直接開始。

首先先說怎么用

需要用到的是這兩個(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);

下面來看封裝類

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)文章

  • c#實(shí)現(xiàn)從字符串?dāng)?shù)組中把數(shù)字的元素找出來

    c#實(shí)現(xiàn)從字符串?dāng)?shù)組中把數(shù)字的元素找出來

    下面小編就為大家分享一篇c#實(shí)現(xiàn)從字符串?dāng)?shù)組中把數(shù)字的元素找出來的方法,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • C#實(shí)現(xiàn)Word轉(zhuǎn)換RTF的示例代碼

    C#實(shí)現(xiàn)Word轉(zhuǎn)換RTF的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)Word轉(zhuǎn)換RTF,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#基礎(chǔ)之委托詳解(Delegate)

    C#基礎(chǔ)之委托詳解(Delegate)

    這篇文章主要介紹了C#基礎(chǔ)之委托(Delegate),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • C#實(shí)現(xiàn)簡(jiǎn)單聊天程序的方法

    C#實(shí)現(xiàn)簡(jiǎn)單聊天程序的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)單聊天程序的方法,實(shí)例分析了C#聊天程序的原理與客戶端、服務(wù)器端的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • 基于使用遞歸推算指定位數(shù)的斐波那契數(shù)列值的解決方法

    基于使用遞歸推算指定位數(shù)的斐波那契數(shù)列值的解決方法

    本篇文章介紹了,基于使用遞歸推算指定位數(shù)的斐波那契數(shù)列值的解決方法。需要的朋友參考下
    2013-05-05
  • C#實(shí)現(xiàn)winform用子窗體刷新父窗體及子窗體改變父窗體控件值的方法

    C#實(shí)現(xiàn)winform用子窗體刷新父窗體及子窗體改變父窗體控件值的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)winform用子窗體刷新父窗體及子窗體改變父窗體控件值的方法,涉及C#窗體交互的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#飛機(jī)打字游戲的代碼示例(winform版)

    C#飛機(jī)打字游戲的代碼示例(winform版)

    這篇文章主要介紹了C#飛機(jī)打字游戲的代碼示例(winform版),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • c# 通過經(jīng)緯度查詢 具體的地址和區(qū)域名稱

    c# 通過經(jīng)緯度查詢 具體的地址和區(qū)域名稱

    最近項(xiàng)目需要通過經(jīng)緯度查詢 具體的地址和區(qū)域名稱,通過查詢網(wǎng)絡(luò)資源,發(fā)現(xiàn)提供的大多是得到具體的地址而對(duì)區(qū)域或城市名稱的獲取就不是很好把握;在這里自己搞了個(gè),需要的朋友可以參考下
    2012-11-11
  • 自定義WPF窗體形狀的實(shí)戰(zhàn)記錄

    自定義WPF窗體形狀的實(shí)戰(zhàn)記錄

    WPF是制作界面的一大利器,下面這篇文章主要給大家介紹了關(guān)于自定義WPF窗體形狀的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們一起來看看吧
    2018-09-09
  • WPF下如何自定義MessageBox消息提示

    WPF下如何自定義MessageBox消息提示

    這篇文章主要介紹了WPF下如何自定義MessageBox消息提示問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論

北海市| 汕头市| 平阴县| 渝中区| 增城市| 河北省| 尼木县| 桐城市| 江达县| 延边| 澜沧| 小金县| 三原县| 运城市| 龙井市| 手机| 铜梁县| 永春县| 宁武县| 云林县| 慈利县| 潞城市| 昌都县| 建平县| 峡江县| 黄浦区| 南澳县| 本溪市| 惠来县| 邢台县| 夏河县| 尉氏县| 凯里市| 汉川市| 无为县| 肇源县| 昆山市| 河津市| 青铜峡市| 新沂市| 利川市|