序列化和反序列化方法
2014-02-14 17:09
441 查看
#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
/// <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
相关文章推荐
- windows各版本系统密码重置教程(windows密码万能重置教程)
- projecteuler No.80 Square root digital expansion
- 一些shell脚本实例
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图
- [JQuery]选择器使用举例
- 【数据结构】 约瑟夫回环 代码
- Spring中配置事务的几种方式
- Android 自定义Spinner和其下拉窗口
- ruby 中的 module
- Android 开源的真相: 无法fork
- 也谈微软云计算---基于Windows AzurePack的私有云 推荐
- 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”
- Java终止循环体
- 第一篇 test
- JS方式简单显示用户IP与地区来源
- TOJ 1050 Courses 二分匹配
- 解决问题:有几个bing?
- Tomcat6.0+MyEclipse6.0+mysql5.0数据库连接池配置!
- Struts日历选择框 标签<sx:datetimepicker.../>详解
- C++11 并发指南二(std::thread 详解)