xml序列化与反序列化工具
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using System.IO;
using System.Xml.Serialization;
using System.Xml; namespace ConsoleApplication1
{
/// <summary>
/// xml序列化与反序列化工具
/// </summary>
public class XmlSerializeUtil
{
/// <summary>
/// xml反序列化
/// </summary>
/// <param name="type"></param>
/// <param name="xml"></param>
/// <example>
/// CustomerMapPageRoute customerRoute = XmlSerializeUtil.Deserialize(typeof(CustomerMapPageRoute), xmldoc.OuterXml) as CustomerMapPageRoute
/// </example>
/// <returns></returns>
public static object Deserialize(Type type, string xml)
{
using (StringReader stringReader = new StringReader(xml))
{
XmlSerializer xmlSerializer = new XmlSerializer(type);
return xmlSerializer.Deserialize(stringReader);
}
} /// <summary>
/// xml反序列化
/// </summary>
/// <param name="type"></param>
/// <param name="stream"></param>
/// <returns></returns>
public static object Deserialize(Type type, Stream stream)
{
XmlSerializer xmlSerializer = new XmlSerializer(type);
return xmlSerializer.Deserialize(stream);
} /// <summary>
/// xml反序列化泛型
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xml"></param>
/// <example>
/// CustomerMapPageRoute obj1 = XmlSerializeUtil.Deserialize<CustomerMapPageRoute>(xmldoc.OuterXml);
/// </example>
/// <returns></returns>
public static T Deserialize<T>(string xml)
{
using (StringReader stringReader = new StringReader(xml))
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
return (T)xmlSerializer.Deserialize(stringReader);
}
} /// <summary>
/// xml反序列化泛型
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="type"></param>
/// <param name="stream"></param>
/// <returns></returns>
public static T Deserialize<T>(Type type, Stream stream)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
return (T)xmlSerializer.Deserialize(stream);
} /// <summary>
/// 对象序列化为xml
/// </summary>
/// <param name="type"></param>
/// <param name="obj"></param>
/// <example>
/// string xml = XmlSerializeUtil.Serializer(typeof(对象名), obj);
/// </example>
/// <returns></returns>
public static string Serializer(Type type, object obj)
{
try
{
using (MemoryStream stream = new MemoryStream())
{
XmlSerializer xmlSerializer = new XmlSerializer(type); xmlSerializer.Serialize(stream, obj);
stream.Position = ; using (StreamReader streamReader = new StreamReader(stream))
{
return streamReader.ReadToEnd();
}
}
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 对象序列化为xml
/// </summary>
/// <typeparam name="T">泛型对象</typeparam>
/// <param name="t">对象</param>
/// <returns>xml encoding="utf-8"</returns>
/// <example>
/// string xml = XmlSerializeUtil.Serializer<对象名>(obj); //encoding="utf-8"
/// </example>
public static string Serializer<T>(T t)
{
return Serializer<T>(t, Encoding.UTF8);
} /// <summary>
/// 对象序列化为xml
/// </summary>
/// <typeparam name="T">泛型对象</typeparam>
/// <param name="t">对象</param>
/// <param name="encoding">Encoding e = Encoding.UTF8 ASCII,Unicode,UTF32,UTF7,UTF8,Default
/// Encoding.Default <?xml version="1.0" encoding="gb2312"?>
/// Encoding.UTF8 <?xml version="1.0" encoding="utf-8"?>
/// </param>
/// <example>
/// string xml = XmlSerializeUtil.Serializer<对象名>(obj); //encoding="utf-8"
/// string xml = XmlSerializeUtil.Serializer<对象名>(obj, Encoding.Default); //encoding="gb2312"
/// </example>
/// <returns>xml</returns>
public static string Serializer<T>(T t, Encoding encoding)
{
if (t == null)
throw new ArgumentException("object is null");
if (encoding == null)
{
encoding = Encoding.UTF8;
}
try
{
using(MemoryStream stream=new MemoryStream())
{
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.Encoding = encoding; XmlWriter xmlWiter = XmlWriter.Create(stream,xmlWriterSettings); XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
xsn.Add(string.Empty, string.Empty); XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
xmlSerializer.Serialize(xmlWiter, t, xsn);
xmlWiter.Close();
stream.Position = ;
using(StreamReader streamReader=new StreamReader(stream,encoding))
{
return streamReader.ReadToEnd();
}
}
}
catch(Exception ex)
{
throw ex;
}
} }
}
xml序列化与反序列化工具的更多相关文章
- XML 序列化与反序列化
XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...
- XmlSerializer 对象的Xml序列化和反序列化
http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...
- C#的XML序列化及反序列化
webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...
- .NET XML序列化与反序列化
闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <ty ...
- XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置
这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...
- c# XML序列化与反序列化
c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...
- Xml序列化、反序列化帮助类
之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 /// <summary> / ...
- Windows phone 之XML序列化与反序列化
为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...
- C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化
这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...
随机推荐
- UVA 220 Othello
题意:输入n,代表次数,每次输入8*8的棋盘,处理3种命令:①L:打印所有合法操作,②M:放棋子,③Q:打印棋盘然后退出. 思路:①用字符数组存棋盘,整型数组存合法位置. ②查找的方法:当前玩家为cu ...
- Vue渲染列表,在更新data属性后,列表未更新问题
初始化代码如下var tableModel = new Vue({el: '#datatable',data: {items: listData}}); 当我对列表操作时,listData=>n ...
- google像apple 30亿美元购买流量
google花费30亿美元像apple购买流量作为iphone默认搜索引擎.
- OI常用重载运算符
用STL时经常用到 PS:这里有个巨坑,把重载写在STL里常数会爆炸,分分钟大数据TLE 所以就把重载放在结构体里啦 //以priority_queue的重载为例 //priority_queue默认 ...
- [USACO08JAN]牛大赛Cow Contest
OJ题号:洛谷2419 思路: Floyd求有向图的传递闭包,只要该点与其他所有点相连即可确定名次. #include<cstdio> #include<cstring> in ...
- [USACO18DEC]The Cow Gathering
Description: 给定一棵树,每次删去叶子,有m个限制,分别为(a,b)表示a需要比b先删,为每个点能否成为最后被删的点 Hint: \(n,m \le 10^5\) Solution: 手模 ...
- ACM知识点总结
1 枚举 2 模拟 3 构造 4 位运算的应用 5 查找 5.1 二分查找 5.2 分块查找 5.3 哈希查找HASH 5.3.1 线性探测法 5.3.2 字符串与哈希 6 搜索 6.1 深度优先搜索 ...
- yii2 配合bootstrap添加一个气泡
添加一个气泡 1.bootstrap 官网:http://getbootstrap.com/ 2.bootstrap 中文官网:http://v3.bootcss.com/ 添加气泡主要需要用到 bo ...
- 3ds max学习笔记(十六)-- 摄像机
摄像机添加以及应用技巧:可以更改观察的视点和空间广阔,模拟景深和运动模糊效果: 1,添加:更改观察的角度和位置,增加场景透视感: 基本操作: 景深:
- Centos-Mariadb(新版mysql)无法远程连接
实际上之前有别人安装过了,对于这种交接的工作最难做,也就是沟通问题.我需要解决的问题是远程连接的问题,百度了一下后,被各路大佬绕的稀里糊涂,耗费了3 个小时 对于即将提交项目的我们来说,简直头疼.表示 ...