using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml.Serialization;
using System.Data;
using System.Reflection;
using System.Collections;
namespace Ant.Service.Common
{
///
/// 序列化反序列化对象帮助类
/// add 作者: 季健国 QQ:181589805 by 2016-03-09
///
public class SerializationHelper
{
public SerializationHelper() { }
///
/// 反序列化
///
/// 对象类型
/// 文件路径
///
public static object Load(Type type, string filename)
{
FileStream fs = null;
try
{
// open the stream...
fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(type);
return serializer.Deserialize(fs);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (fs != null)
fs.Close();
}
}
///
/// 序列化
///
/// 对象
/// 文件路径
public static void Save(object obj, string filename)
{
FileStream fs = null;
// serialize it...
try
{
fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(fs, obj);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (fs != null)
fs.Close();
}
}
///
/// 序列化XML字符串
///
/// 对象
public static string Save(object obj)
{
MemoryStream ms = new MemoryStream();
System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(ms, Encoding.Default);
// serialize it...
try
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(xtw, obj);
return Encoding.Default.GetString(ms.ToArray());
}
catch (Exception ex)
{
throw ex;
}
finally
{
xtw.Close();
ms.Dispose();
}
}
///
/// 反序列化XML字符串
///
/// 类型
/// XML字符串
///
public static object Get(Type type, string xml)
{
MemoryStream ms = null;
StreamReader sr = null;
try
{
XmlSerializer serializer = new XmlSerializer(type);
ms = new MemoryStream(Encoding.Default.GetBytes(xml));
using (sr = new StreamReader(ms, Encoding.Default))
{
return serializer.Deserialize(sr);
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
sr.Dispose();
sr.Close();
ms.Dispose();
}
}
}
}