using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Text; using System.Xml.Serialization; using System.IO; using System.Xml; using System.Runtime.Serialization.Formatters.Binary; /// <summary> /// XMLHelper 的摘要说明 /// </summary> public class XMLHelper { public XMLHelper() { // // TODO: 在此处添加构造函数逻辑 // } /// <summary> /// 将object对象序列化成XML /// </summary> /// <typeparam name="T"></typeparam> /// <param name="encoding"></param> /// <returns></returns> public static string ObjectToXML<T>(T t, Encoding encoding) { XmlSerializer ser = new XmlSerializer(t.GetType()); using (MemoryStream mem = new MemoryStream()) { using (XmlTextWriter writer = new XmlTextWriter(mem, encoding)) { XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", ""); ser.Serialize(writer, t, ns); return encoding.GetString(mem.ToArray()).Trim(); } } } /// <summary> /// 将XML反序列化成对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="source"></param> /// <param name="encoding"></param> /// <returns></returns> public static T XMLToObject<T>(string source, Encoding encoding) { XmlSerializer mySerializer = new XmlSerializer(typeof(T)); using (MemoryStream stream = new MemoryStream(encoding.GetBytes(source))) { return (T)mySerializer.Deserialize(stream); } } /// <summary> /// 二进制方式序列化对象 /// </summary> /// <param name="testUser"></param> public static string Serialize<T>(T obj) { MemoryStream ms = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(ms, obj); return ms.ToString(); } /// <summary> /// 二进制方式反序列化对象 /// </summary> /// <returns></returns> public static T DeSerialize<T>(string str) where T : class { MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str)); BinaryFormatter formatter = new BinaryFormatter(); T t = formatter.Deserialize(ms) as T; return t; } }