1. 程式人生 > >C#XML的序列化和反序列化

C#XML的序列化和反序列化

 最近負責的專案,用到了xml的序列化和反序列化,在此做個記錄以供下次學習使用
 前言:

  • 序列化和反序列化就是解析和反解析
  • 序列化:將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程(簡單來說就是將物件轉化為位元組過程)
  • 反序列化:將位元組序列轉化為物件的過程
  • 序列化的主要用處:就是為了傳遞資料和儲存資料,同時保證資料的完整性和可傳遞性
  •  反序列化的主要用處:客戶端從網路上獲得序列化的位元組流後,根據流中物件的狀態和資訊反序列為原物件,也就是重建物件

  提示:為大家推薦一個線上xml生成實體類的地址:[http://xmltocsharp.azurewebsites.net/

]

內容:

/// <summary>
/// Xml的序列化
/// </summary>
/// <param name="type">型別</param>
/// <param name="str"></param>
/// <returns></returns>
public static string SerializerXml(Type type,object str)
{
    MemoryStream stream = new MemoryStream();
    XmlSerializer xmlSerializer = new XmlSerializer(type);
    xmlSerializer.Serialize(stream, str);
    stream.Position = 0;
    StreamReader reader = new StreamReader(stream);
    string res=  reader.ReadToEnd();
    reader.Dispose();
    stream.Dispose();
    return res;
            
}
/// <summary>
///Xml 的反序列化:
/// </summary>
/// <param name="type">要轉換的型別</param>
/// <param name="xml">目標xml</param>
/// <returns></returns>
public static object  DeserializerXml(Type type,string xml)
{
    try
    {
        using (StringReader str = new StringReader(xml))
        {
            XmlSerializer xmlSerializer = new XmlSerializer(type);
            object o = xmlSerializer.Deserialize(str);
            return o;
        }
    }
    catch (Exception)
    {
        return null;
    }  
}

我的小demo使用案例: