/// <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. Redis 命令使用

    Redis 中所有 key-value 都储存在 Redis-Object 中,Redis-Object 主要信息有: 数据类型(type) string (字符串) hash (Hash表) lis ...

  2. tornado异步请求响应速度的实例测试

    tornado异步请求响应速度的实例测试

  3. CAP C3-2分析

    一致性 可用性 分区容错性 <Hadoop构建数据仓库实践> p84

  4. Ionic4.x 中的 UI 组件(UI Components) 日期组件

    1.日期组件的基本使用 官方文档:https://ionicframework.com/docs/api/datetime 模板中: <ion-datetime display-format=& ...

  5. initGLWidgetAndViewer

    void initGLWidgetAndViewer() { osgViewer::ViewerBase::ThreadingModel threadingModel = osgViewer::Vie ...

  6. 阶段5 3.微服务项目【学成在线】_day18 用户授权_08-动态查询用户的权限-用户中心查询用户权限

    3.3 用户中心查询用户权限 3.3.1 需求分析 认证服务请求用户中心查询用户信息,用户需要将用户基本信息和用户权限一同返回给认证服务. 本小节实现用户查询查询用户权限,并将用户权限信息添加到的用户 ...

  7. QML加载gif

    AnimatedImage { anchors.fill: parent source: "qrc:/img/timg.gif" }

  8. Qt编写自定义控件52-颜色下拉框

    一.前言 这个控件写了很久了,元老级别的控件之一,开发之初主要是自己的好几个项目要用到,比如提供一个颜色下拉框设置对应的曲线或者时间颜色,视频监控项目中经常用到的OSD标签设置,这个控件的难度系数接近 ...

  9. 爆库记录(X-Forwarded-For注入漏洞实战 记录)

    环境位置: https://www.mozhe.cn/bug/detail/QWxmdFFhVURDay90L0wxdmJXSkl5Zz09bW96aGUmozhe 参考: http://www.fr ...

  10. LeetCode_171. Excel Sheet Column Number

    171. Excel Sheet Column Number Easy Given a column title as appear in an Excel sheet, return its cor ...