/// <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; }
}

C# XML 序列化帮助类的更多相关文章

  1. C#工具类之Xml序列化扩展类

    using System; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.T ...

  2. C# XML序列化帮助类代码

    public static class XmlHelper { private static void XmlSerializeInternal(Stream stream, object o, En ...

  3. C# XML序列化/反序列化类XmlSerializer使用示例

    using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; ...

  4. C#对象XML序列化

    1.Xml序列化操作类 .Net Framework提供了对应的System.Xml.Seriazliation.XmlSerializer负责把对象序列化到XML,和从XML中反序列化为对象. 以下 ...

  5. C# Note4:XML序列化和反序列化(含加密解密等)

    前言 在项目中,我们经常用到各种配置文件,比如xml文件.binary文件等等,这里主要根据实践经验介绍下xml文件的序列化和反序列化(毕竟最常用). 实践背景:我要做一个用户管理功能,用户账号信息存 ...

  6. Xml 序列化和反序列化

    xml序列化帮助类 using System.IO; using System.Xml; using System.Xml.Serialization; public class XmlHelper ...

  7. [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类

    [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...

  8. c# XML和实体类之间相互转换(序列化和反序列化)[砖]

    link: http://blog.okbase.net/haobao/archive/62.html by: 好饱 我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlU ...

  9. C# XML和实体类之间相互转换(序列化和反序列化)

    我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. using System; using System.Collections.Ge ...

随机推荐

  1. python3.6+pycharm+robotframework 环境搭建

    参考文档:https://www.cnblogs.com/chenyuebai/p/8359577.html, https://www.cnblogs.com/jiyanjiao-702521/p/9 ...

  2. JMeter-因cookie管理器不兼容返回H5内容内容的解决

    问题: 使用的post方法但是显示的是get,并且返回页面H5的内容 解决: jmeter版本太低了,需要选择cookie管理期选择兼容模式(一般默认的为standard)

  3. python 设计模式之中介者模式

    #先啰嗦一下 至少半个多月的样子没写博客了,月初去了趟黄山,赏了美景,自然没时间也没条件敲博客了,一个多星期就这么过去了.返回深圳后,工作积压了一堆,然后白天就马不停蹄的忙工作,晚上回家伺候小娃,又想 ...

  4. 阶段5 3.微服务项目【学成在线】_day18 用户授权_03-方法授权-jwt令牌包含权限

    修改认证服务的UserDetailServiceImpl类,下边的代码中 permissionList列表中存放了用户的权限, 并且将权限标识按照中间使用逗号分隔的语法组成一个字符串,最终提供给Spr ...

  5. 随机数据构造-Faker

    from faker import Faker # fake = Faker() #本地化处理 fake = Faker('zh_CN') # print(fake.name()) # print(f ...

  6. linux常用的命令和工具

    screen     管理会话工具 与之相似的工具还有tmux # screen // 进入一个回话 .还可以给会话取名 screen -S modify_screen #vim screen.txt ...

  7. Delphi ADOQuery的速度优化

    今天终于把纠缠了几天的问题改完了,说到底只是一个很小的问题,就是ADOQuery的一个小属性. 把控件DBGridEh的一列的checkbox设为true,将其绑定DataSource和ADOQuer ...

  8. (七)Centos之链接命令

    一.链接命令:ln  (link) ln -s [源文件] [目标文件] 功能描述:生成链接文件 选项: -s 创建软链接 二.硬链接 硬链接特征: 1,拥有相同的i节点和存储block块,可以看作是 ...

  9. iOS笔试题02

    1. Difference between shallow copy and deep copy? 1> 浅拷贝:指针(地址)拷贝,不会产生新对象 2> 深拷贝:内容拷贝,会产生新对象 2 ...

  10. 【c# 学习笔记】子类的初始化顺序

    使用了继承之后,当我们初始化一个子类时,除了会调用子类的构造函数外,同时也会调用基类的构造函数.子类的初始化顺序如下: ① 初始化类的实例字段: ② 调用基类的构造函数,如果没有指明基类,则调用Sys ...