#region 序列化和反序列化
/// <summary>
/// 反序列化方法
/// </summary>
/// <typeparam name="T">反序列化对象类型</typeparam>
/// <param name="xml">反序列化字符串或者xml文件路径</param>
/// <returns></returns>
public static T Desrialize<T>(string xml)
{
T obj = default(T);
XmlSerializer xs = new XmlSerializer(typeof(T));
TextReader tr;
if (!File.Exists(xml))
{
tr = new StringReader(xml);
}
else
{
tr = new StreamReader(xml);
}
using (tr)
{
obj = (T)xs.Deserialize(tr);
}
return obj;
}
/// <summary>
/// 反序列化方法
/// </summary>
/// <param name="xml">xml字符串</param>
/// <param name="type">反序列化对象的类型</param>
/// <returns>反序列化后的对象</returns>
public static List<T> Desrialize<T>(string xml, Type type)
{
List<T> tList = default(List<T>);
XmlSerializer xs = new XmlSerializer(type);
TextReader tr;
if (!File.Exists(xml))
{
tr = new StringReader(xml);
}
else
{
tr = new StreamReader(xml);
}
using (tr)
{
tList = (List<T>)xs.Deserialize(tr);
}
return tList;
}
/// <summary>
/// 序列化成xml字符串
/// </summary>
/// <param name="obj"></param>
/// <returns>序列化后的字符串</returns>
public static string Serialize<T>(T t)
{
XmlSerializer xs = new XmlSerializer(t.GetType());
using (MemoryStream ms = new MemoryStream())
{
System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(ms, System.Text.Encoding.UTF8);
xtw.Formatting = System.Xml.Formatting.Indented;
xs.Serialize(xtw, t);
ms.Seek(0, SeekOrigin.Begin);
using (StreamReader sr = new StreamReader(ms))
{
string str = sr.ReadToEnd();
xtw.Close();
ms.Close();
return str;
}
}
}
/// <summary>
/// 序列化成xml字符串
/// </summary>
/// <param name="obj"></param>
/// <returns>序列化后的字符串</returns>
public static string Serialize<T>(List<T> tList)
{
XmlSerializer xs = new XmlSerializer(Activator.CreateInstance<T>().GetType());
using (MemoryStream ms = new MemoryStream())
{
System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(ms, System.Text.Encoding.UTF8);
xtw.Formatting = System.Xml.Formatting.Indented;
xs.Serialize(xtw, tList);
ms.Seek(0, SeekOrigin.Begin);
using (StreamReader sr = new StreamReader(ms))
{
string str = sr.ReadToEnd();
xtw.Close();
ms.Close();
return str;
}
}
}
#endregion