/// <summary>
/// Xml helper class
/// </summary>
public static class XmlHelper
{
#region 序列化 /// <summary>
/// XML Serialize
/// </summary>
/// <param name="obj"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static string Serialize<T>(T obj, Encoding encoding = null)
{
return Serialize(obj, typeof(T), encoding);
} /// <summary>
/// XML Serialize
/// </summary>
/// <param name="obj"></param>
/// <param name="type"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static string Serialize(object obj, Type type, Encoding encoding = null)
{
return Serialize(obj, type, encoding, null);
} /// <summary>
/// XML Serialize
/// </summary>
/// <param name="obj"></param>
/// <param name="type"></param>
/// <param name="encoding"></param>
/// <param name="types"></param>
/// <returns></returns>
public static string Serialize(object obj, Type type, Encoding encoding, params Type[] types)
{
var serializer = new XmlSerializer(type, types);
var sb = new StringBuilder(); using (var writer = new EncodingStringWriter(sb, encoding))
{
var namespaces = new XmlSerializerNamespaces();
namespaces.Add("", "");
serializer.Serialize(writer, obj, namespaces);
return sb.ToString();
}
} /// <summary>
/// XML Deserialize
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xml"></param>
/// <returns></returns>
public static T Deserialize<T>(string xml)
{
return Deserialize<T>(xml, typeof(T));
} /// <summary>
/// XML Deserialize
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xml"></param>
/// <param name="type"></param>
/// <returns></returns>
public static T Deserialize<T>(string xml, Type type)
{
return Deserialize<T>(xml, type, null);
} /// <summary>
/// XML Deserialize
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xml"></param>
/// <param name="type"></param>
/// <param name="types"></param>
/// <returns></returns>
public static T Deserialize<T>(string xml, Type type, params Type[] types)
{
var serializer = new XmlSerializer(type, types);
using (TextReader reader = new StringReader(xml))
{
var obj = (T)serializer.Deserialize(reader);
return obj;
}
} #endregion 序列化
} public class EncodingStringWriter : StringWriter
{
public EncodingStringWriter(StringBuilder stringBuilder, Encoding encoding = null) : base(stringBuilder)
{
Encoding = encoding ?? Encoding.UTF8;
} public override Encoding Encoding { get; }
}

最新文章

  1. Python 网络编程(一)
  2. GAMIT 10.50在Ubuntu 12.04系统下的安装
  3. gitlab的使用方法
  4. PHP 小方法之 显示 今天 昨天 上周 上月 近三月 的时间
  5. 最简单的一个Oracle定时任务
  6. 批量导数据之利器-load data[2016-07-11]
  7. python 遗传算法精简版
  8. linux命令(4):top 命令(性能分析工具)
  9. div 块跟随 鼠标点击
  10. eclipse lint工具介绍
  11. poj1617---columnar encryption
  12. php 解析xml 的四种方法(转)
  13. CSS3框架!
  14. Android broadcast
  15. solr与.net课程(七)solr主从复制
  16. Makefile自动生成:cmake
  17. 【DirectX12】第六章-练习
  18. Go语言入门系列2 基本语法
  19. 爬虫开发9.scrapy框架之递归解析和post请求
  20. 编程中经常看到上下文context,这个上下文指得是什么?

热门文章

  1. python 设计模式之策略模式
  2. XListView实现上拉加载下拉刷新
  3. 整理Mac系统 node-sass 安装失败的原因及解决办法
  4. Flutter布局基本情况总结:
  5. web端安全测试工具
  6. LeetCode_160. Intersection of Two Linked Lists
  7. (十二)会话跟踪技术之servlet通信(forward和include)
  8. Mac 裁剪mp3
  9. 【leetcode_easy】589. N-ary Tree Preorder Traversal
  10. 【leetcode_easy】581. Shortest Unsorted Continuous Subarray