123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- 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
- {
- /// <summary>
- /// 序列化成xml
- /// </summary>
- /// <param name="obj"></param>
- /// <returns></returns>
- 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;
- }
- /// <summary>
- /// 反序列化成对象
- /// </summary>
- /// <param name="xmlString"></param>
- /// <param name="type"></param>
- /// <returns></returns>
- 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);
- }
- /// <summary>
- /// 将支持序列化的对象序列化成字符串
- /// </summary>
- /// <param name="poObject"></param>
- /// <returns></returns>
- 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;
- }
- /// <summary>
- /// 将字符串反序列化成对象
- /// </summary>
- /// <param name="pcString"></param>
- /// <returns></returns>
- 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;
- }
- }
- }
|