C#工具类之Xml序列化扩展类
using System;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Xml.Serialization;
/// <summary>
/// Xml序列化
/// </summary>
public static class XmlSerializerHelper
{
/// <summary>
/// 将对象序列化为Xml
/// </summary>
/// <typeparam name="T">对象实例对应的类.T的修饰符应当为Public</typeparam>
/// <param name="obj">对象实例</param>
/// <returns>序列化后的字符串</returns>
public static string ToXml<T>(this T obj)
{
if (obj == null) throw new NullReferenceException(); XmlSerializer serializer = new XmlSerializer(typeof(T)); using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, obj);
return writer.ToString();
}
} /// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xmlDocument"></param>
/// <returns></returns>
public static T ToInstanceFromXml<T>(this string xmlDocument)
{
using (StringReader reader = new StringReader(xmlDocument))
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
var obj = serializer.Deserialize(reader);
if (obj is T)
{
return (T)obj;
} return default(T);
}
} /// <summary>
/// 将对象序列化为Xml
/// </summary>
/// <param name="obj">对象实例</param>
/// <returns>序列化后的字符串</returns>
public static string ToXml(this object obj)
{
return ToXml(obj, Encoding.UTF8);
} /// <summary>
/// 将对象序列化为Xml
/// </summary>
/// <param name="obj">对象实例</param>
/// <param name="encoding">编码格式</param>
/// <returns>序列化后的字符串</returns>
public static string ToXml(this object obj, Encoding encoding)
{
if (obj == null)
{
throw new ArgumentException("对象实例不能为空");
} if (encoding == null)
{
throw new Exception("编码不能为空");
} using (var stream = new MemoryStream())
{
var serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(stream, obj);
stream.Position = ;
return encoding.GetString(stream.ToArray());
}
} }
C#工具类之Xml序列化扩展类的更多相关文章
- ASP.NET 对类进行XML序列化和反序列化
1 序列化方法 public void SerializeObject<T>(string Xmlname,T t) { XmlSerializer ser = new XmlSerial ...
- 类的XML序列化(XML Serialization)
最近做的一个ASP.NET项目中,需要在一个页面中维护一个类的数组,在每次页面刷新的使其前一次的状态保持不变.开始错误的使用了static,导致了致命的共享错误.后来突然想起C#类能够使用XML序列化 ...
- C# XML序列化帮助类代码
public static class XmlHelper { private static void XmlSerializeInternal(Stream stream, object o, En ...
- rest_framework视图基类与五个扩展类
1. 两个基类 1)APIView rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父类. AP ...
- GenericAPIView类与几个扩展类的综合使用
五个扩展类 扩展类 作用 封装的方法 状态码(成功,失败) ListModelMixin 查询多条数据 list 200 CreateModelMixin 新增一条数据 create 201,400 ...
- C# XML序列化/反序列化类XmlSerializer使用示例
using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; ...
- C# XML 序列化帮助类
/// <summary> /// Xml helper class /// </summary> public static class XmlHelper { #regio ...
- .NET(C#):XML序列化时派生类的处理
原文 www.cnblogs.com/mgen/archive/2011/12/03/2275014.html 目录 1. 针对基类的XmlSerializer序列化派生类 2. 类内成员是派生类的序 ...
- [Django REST framework - 视图组件之视图基类、视图扩展类、视图子类、视图集]
[Django REST framework - 视图组件之视图基类.视图扩展类.视图子类.视图集] 视图继承关系 详图见文章末尾 视图组件可点我查看 两个视图基类:APIView.GenericAP ...
随机推荐
- Realsense深度相机资料
1.Realsense SDK 2.0 Ubuntu 16.04 安装指导网址 https://github.com/IntelRealSense/librealsense/blob/master/d ...
- 使用java开源包解析ifc并获取数据(树形结构)
import java.io.File;import java.util.Collection;import java.util.Enumeration;import java.util.HashM ...
- Flask框架 之 基本使用
初识Flask Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求 ...
- 《Effective Java》第11章 序列化
"将一个对象编码成一个字节流",称作将该对象序列化(serializing); 相反的处理过程被称作反序列化(deserializing),一旦对象被序列化后,它的编码就可以从一台 ...
- Android之悬浮窗口实现(WindowManager)
工作中遇到一些项目需要把窗体显示在最上层,像来电弹窗显示电话号码等信息.拦截短信信息显示给用户或者游戏中实现声音的调节,我们想这些数据放在最上层,activity就满足不了我们的需求了,有些开发者使用 ...
- es6学习总结一
一.let与var 的区别 (1).作用域: let什么的变量在块级作用域内有效,而var声明则在全局作用内有效 (2).变量提升: let声明的变量不存在变量提升,即一定要在声明之后才能调用,否则就 ...
- c#百分比计算
//此方法得到的百分比后小数太多,不行double percent=Convert.ToDouble(2)/Convert.ToDouble(34); string result=(percent*1 ...
- Android Android环境安装
Android环境安装 一.下载: 所需:eclipse.sdk.jdk.adt 参考 工具下载地址:http://www.androiddevtools.cn/ 二安装: 1.eclipse: 选择 ...
- 读《JavaScript权威指南》笔记(五)
1.getComputedStyle()方法的返回值是一个CSSStyleDeclaration对象,它代表了应用在指定元素(或伪对象)上的所有样式. 2.clip style="clip: ...
- AB二进制
Description 若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数. 例如: (13)10=(1101)2 ...