C#XML的序列化和反序列化
阿新 • • 發佈:2018-11-07
最近負責的專案,用到了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使用案例: