C# XML 序列化帮助类
2024-09-01 13:05:35
/// <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; }
}
最新文章
- Python 网络编程(一)
- GAMIT 10.50在Ubuntu 12.04系统下的安装
- gitlab的使用方法
- PHP 小方法之 显示 今天 昨天 上周 上月 近三月 的时间
- 最简单的一个Oracle定时任务
- 批量导数据之利器-load data[2016-07-11]
- python 遗传算法精简版
- linux命令(4):top 命令(性能分析工具)
- div 块跟随 鼠标点击
- eclipse lint工具介绍
- poj1617---columnar encryption
- php 解析xml 的四种方法(转)
- CSS3框架!
- Android broadcast
- solr与.net课程(七)solr主从复制
- Makefile自动生成:cmake
- 【DirectX12】第六章-练习
- Go语言入门系列2 基本语法
- 爬虫开发9.scrapy框架之递归解析和post请求
- 编程中经常看到上下文context,这个上下文指得是什么?
热门文章
- python 设计模式之策略模式
- XListView实现上拉加载下拉刷新
- 整理Mac系统 node-sass 安装失败的原因及解决办法
- Flutter布局基本情况总结:
- web端安全测试工具
- LeetCode_160. Intersection of Two Linked Lists
- (十二)会话跟踪技术之servlet通信(forward和include)
- Mac 裁剪mp3
- 【leetcode_easy】589. N-ary Tree Preorder Traversal
- 【leetcode_easy】581. Shortest Unsorted Continuous Subarray