using System; using System.Collections.Generic; using System.Text; using System.Xml; using System.IO; using System.Xml.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace SysBaseLibs { public sealed class SerializerHelper { /// /// 序列化成xml /// /// /// public static string SerializerToString(object obj) { StringWriter writer = new StringWriter(); XmlSerializer serializer = new XmlSerializer(obj.GetType()); serializer.Serialize(writer, obj); XmlDocument doc = new XmlDocument(); doc.LoadXml(writer.ToString()); return doc.DocumentElement.OuterXml; } public static XmlNode SerializerToXmlNode(object obj) { StringWriter writer = new StringWriter(); XmlSerializer serializer = new XmlSerializer(obj.GetType()); serializer.Serialize(writer, obj); XmlDocument doc = new XmlDocument(); doc.LoadXml(writer.ToString()); return doc.DocumentElement; } /// /// 反序列化成对象 /// /// /// /// public static object Deserialize(string xmlString, Type type) { StringReader reader = new StringReader(xmlString); XmlSerializer serializer = new XmlSerializer(type); return serializer.Deserialize(reader); } public static object Deserialize(XmlNode node, Type type) { StringReader reader = new StringReader(node.OuterXml); XmlSerializer serializer = new XmlSerializer(type); return serializer.Deserialize(reader); } /// /// 将支持序列化的对象序列化成字符串 /// /// /// public static string SerializeObject(object poObject) { BinaryFormatter loBinFormatter = new BinaryFormatter(); MemoryStream loMs = new MemoryStream(); loBinFormatter.Serialize(loMs, poObject); byte[] buffer = loMs.ToArray(); string lcRetVal = Convert.ToBase64String(buffer, 0, buffer.Length); loMs.Close(); return lcRetVal; } /// /// 将字符串反序列化成对象 /// /// /// public static object DeserializeObject(string pcString) { object loRetVal = null; if (pcString != null) { byte[] buffer = Convert.FromBase64String(pcString); BinaryFormatter loFormatter = new BinaryFormatter(); MemoryStream loStream = new MemoryStream(buffer, 0, buffer.Length); loRetVal = loFormatter.Deserialize(loStream); loStream.Close(); } return loRetVal; } } }