C# 實體類序列化與反序列化二 (DataContractSerializer)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; using System.IO; using System.Xml; namespace Common.Utility.XMLSerialization { /// <summary> /// DataContractSerializer /// </summary> /// <typeparam name="T"></typeparam> public class DataContractSerializer<T> { /// <summary> /// 實體序列化成xml string /// </summary> /// <param name="meta"></param> /// <returns></returns> public static string ToXMLString(T meta) { DataContractSerializer dcs = new DataContractSerializer(typeof(T)); string xmlStr = string.Empty; using (MemoryStream ms = new MemoryStream()) { try { dcs.WriteObject(ms, meta); xmlStr = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); } catch { throw; } } return xmlStr; } /// <summary> /// DataContract序列化 /// </summary> /// <param name="value"></param> /// <param name="knownTypes">已知型別的集合</param> /// <returns></returns> public static string ToXMLString(object value, IEnumerable<Type> knownTypes = null) { try { DataContractSerializer dataContractSerializer = new DataContractSerializer(value.GetType(), knownTypes); using (MemoryStream ms = new MemoryStream()) { dataContractSerializer.WriteObject(ms, value); ms.Seek(0, SeekOrigin.Begin); using (StreamReader sr = new StreamReader(ms)) { return sr.ReadToEnd(); } } } catch { throw; } } /// <summary> /// 實體反序列化 /// </summary> /// <param name="xml"></param> /// <returns></returns> public static T ReadFromXML(string xmlStr) { T meta; try { DataContractSerializer dcs = new DataContractSerializer(typeof(T)); using (TextReader reader = new StringReader(xmlStr)) { using (XmlReader xReader = XmlReader.Create(reader)) { meta = (T)dcs.ReadObject(xReader); } } } catch { throw; } return meta; } /// <summary> /// 實體反序列化 /// </summary> /// <param name="xmlStr"></param> /// <param name="knownTypes">IEnumerable<Type></param> /// <returns></returns> public static T ReadFromXML(string xmlStr, IEnumerable<Type> knownTypes = null) { T meta; try { DataContractSerializer dcs = new DataContractSerializer(typeof(T), knownTypes); using (TextReader reader = new StringReader(xmlStr)) { using (XmlReader xReader = XmlReader.Create(reader)) { meta = (T)dcs.ReadObject(xReader); } } } catch { throw; } return meta; } } }
擴充:點選開啟連結
相關文章
- C# 實體類序列化與反序列化一 (XmlSerializer)C#XML
- 實體類與XML序列化與反序列化XML
- C# Json 序列化與反序列化二C#JSON
- c#序列化與反序列化概述C#
- C# 序列化與反序列化jsonC#JSON
- C# 實現複雜物件的序列化與反序列化C#物件
- 實體類為啥要序列化
- C# Json 序列化與反序列化一C#JSON
- C#中物件的序列化與反序列化C#物件
- 在C#中實現Json的序列化與反序列化C#JSON
- C# WCF DataContractSerializer 類C#
- c#.net實體類序列化方法 為什麼要序列化C#
- c#序列化C#
- C# - XML讀寫與序列化C#XML
- 序列化與反序列化
- C# 檢視序列化的實體位元組數C#
- C#序列化和反序列化(json)C#JSON
- 序列化與反序列化(GO)Go
- C# 序列化(總)C#
- SimpleRpc-序列化與反序列化的設計與實現RPC
- Java的序列化與反序列化Java
- Java--序列化與反序列化Java
- php中序列化與反序列化PHP
- C# 三種序列化C#
- 泛型類序列化泛型
- gym序列化、EzPickle類
- jackson序列化與反序列化的應用實踐
- java 序列化與反序列化例項Java
- .net序列化與反序列化總結
- Java中的序列化與反序列化Java
- C#中實現JSON功能及物件的序列化和反序列化C#JSON物件
- C#複雜XML反序列化為實體物件兩種方式C#XML物件
- 一行程式碼實現iOS序列化與反序列化行程iOS
- JSON繼承JsonConverter序列化與反序列化重寫類屬性JSON繼承
- Flutter中JSON序列化與反序列化FlutterJSON
- Django REST framework 序列化與反序列化(4)DjangoRESTFramework
- Java序列化(Serializable)與反序列化詳解Java
- C# Json反序列化C#JSON