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;
}
}
}