public class XmlParseObj
{
#region xml和对象的互相转化
/// <summary>
/// 将xml格式转换成对象(能返回泛型集合或类)
/// </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 (!System.IO.File.Exists(xml))
{
tr = new StringReader(xml);
}
else
{
tr = new StreamReader(xml);
}
using (tr)
{
try
{
obj = (T)xs.Deserialize(tr);
}
catch (Exception)
{
throw;
}
}
return obj;
}
/// <summary>
/// 将对象转换成xml(参数接受泛型集合或类)
/// </summary>
/// <param name="obj">泛型集合或类</param>
/// <returns>序列化后的字符串</returns>
public static string Serialize(object obj)
{
XmlSerializer xs = new XmlSerializer(obj.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, obj);
ms.Seek(0, SeekOrigin.Begin);
using (StreamReader sr = new StreamReader(ms))
{
string str = sr.ReadToEnd();
xtw.Close();
ms.Close();
return str;
}
}
}
#endregion
}