中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在C#項目中實現對象序列化XML

發布時間:2021-03-03 15:39:52 來源:億速云 閱讀:132 作者:Leah 欄目:開發技術

這篇文章給大家介紹如何在C#項目中實現對象序列化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);

如何在C#項目中實現對象序列化XML

下面來看封裝類

public class XmlSerializeHelper
  {
    //對象轉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> 
    /// 實體對象序列化成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字符為對象,默認為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就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

xml
AI

荆门市| 赤水市| 舒兰市| 邓州市| 个旧市| 丽水市| 鸡东县| 平泉县| 西乌珠穆沁旗| 株洲市| 长春市| 大荔县| 钟山县| 清流县| 河津市| 普陀区| 大厂| 正镶白旗| 虞城县| 饶阳县| 涟水县| 临沧市| 疏附县| 肇东市| 万载县| 梁平县| 璧山县| 大同市| 高雄市| 和田市| 台中县| 广河县| 平安县| 胶南市| 吉木萨尔县| 和田县| 阳谷县| 开远市| 奉新县| 建阳市| 金昌市|