- 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;
- }
- }
- }
拓展:点击打开链接