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程序执行时,对象都驻留在内存中:内存中的对 ...
随机推荐
- Err.number错误号和可捕获的 Microsoft access 数据库引擎和 DAO错误说明
错误码 信息2420 数字语法错误2421 日期语法错误2422 字符串语法错误2423 ‘.’.‘!’.或 ‘()’的使用无效2 ...
- XamarinAndroid组件教程RecylerView动画组件使用动画(2)
XamarinAndroid组件教程RecylerView动画组件使用动画(2) 如果开发者要为RecylerView的子元素添加动画效果,需要使用RecyclerView类中的SetItemAnim ...
- C#基础用户登陆
1.主界面代码: 2.注册页面 3.登陆界面 登陆注册代码: //编写登录界面逻辑 using System; using System.Collections.Generic; using Syst ...
- js原型的用法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- tcp协议下粘包问题的产生及解决方案
1 tcp有粘包及udp无粘包 - TCP 是面向连接的,面向流的可靠协议:发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据, 合并成 ...
- sqlserver数据类型转换
Insert into [Cet.4] Select CONVERT(VARCHAR(20),CONVERT(DECIMAL(20,7),F1)) FROM Sheet1$ 我从外部导入了一个学号表, ...
- 【迎圣诞,拿大奖】+流量分析+Writeup分享
太菜了太菜了,刚见到jsfuck时竟然不知道什么东西,自己都不敢说自己做过实验吧上的那道jsfuck题了. 进入正题: 首先解压发现两个文件,一个流量分析包,哇哇哇,我正好刚学了几天wireshark ...
- Django深度剖析
启动过程 通过命令行执行 python manage.py runserver 127.0.0.1:8000 启动Django服务 manage.py模块获取到命令行参数manage.py runse ...
- sql 索引笔记2
以下资料都来于MSDN. 聚集索引指南: 一.此列和列值供内部使用,用户不能查看或访问. 查询注意事项 在创建聚集索引之前,应先了解数据是如何被访问的.考虑对具有以下特点的查询使用聚集索引: 使用运算 ...
- Filter(1)—基础知识
一.过滤器(Filter) 1.概述: JavaWeb的一个重要组件,可以对请求和响应拦截 Filter的基本功能是对Servlet容器调用Servlet过程中进行拦截,从而在Servlet进行响应处 ...