XmlSerializer作用是将对象序列化到 XML 文档中和从 XML 文档中反序列化对象。XmlSerializer 使您得以控制如何将对象编码到 XML 中。

所在的命名空间:System.Xml.Serialization
程序集:System.Xml(在 system.xml.dll 中)

先看一个简单的例子,只序列化一个字符串

   static void Main(string[] args)
{
string str="Hello World";
XmlSerializer xml=new XmlSerializer(typeof(string));
xml.Serialize(Console.Out,str);
}

XmlSerializer有很多构造函数,这里我们只用了最简单的一种,本例中的构造函数的参数类型是type,输出时采用的流是控制台输出流

结果:

看输出结果我们可以看出这是一个Xml文档

本文不对Xml进行详细的解释,推荐链接http://baike.baidu.com/link?url=oXEXW9JR89XmCl5akWbaWN6fqdVjbsQRslyABz0M_osCDCrukCyqHKX2c6D7YifKQUp_0Ht0_nM4lv4Y-qZFJIXpVVJqyH-nvgW8V52QpHtU2AE-4bf_iDKHYEE7rm0o

下面我们来序列化一个对象

[XmlRoot]
public class Animals
{
[XmlElement]
public string Name { get; set; }
[XmlElement]
public int Age { get; set; }
}
static void Main(string[] args)
{
Animals ani=new Animals();
ani.Name = "dog";
ani.Age = ;
XmlSerializer xml=new XmlSerializer(typeof(Animals));
xml.Serialize(new FileStream(@"D:\1.txt",FileMode.Create,FileAccess.ReadWrite), ani);
}

执行之后的结果:

<?xml version="1.0"?>
<Animals xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>dog</Name>
<Age>12</Age>
</Animals>

下面是反序列化对象

 Animals ani=new Animals();
ani.Name = "dog";
ani.Age = ;
FileStream stream = new FileStream(@"D:\1.txt", FileMode.Create, FileAccess.ReadWrite);
XmlSerializer xml=new XmlSerializer(typeof(Animals));
xml.Serialize(stream, ani);
stream.Close();
Animals ani2=(Animals)xml.Deserialize(new FileStream(@"D:\1.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite));
Console.WriteLine(ani2.Age+ani2.Name);

XmlSerializer的更多相关文章

  1. 谁能在同一文件序列化多个对象并随机读写(反序列化)?BinaryFormatter、SoapFormatter、XmlSerializer还是BinaryReader

    谁能在同一文件序列化多个对象并随机读写(反序列化)?BinaryFormatter.SoapFormatter.XmlSerializer还是BinaryReader 随机反序列化器 +BIT祝威+悄 ...

  2. XmlSerializer的使用

    关键词: XmlSerializer StreamWriter T instance 保存xml文件 代码: public static void SaveXML<T>(string xm ...

  3. XmlSerializer 对象的Xml序列化和反序列化

    http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...

  4. WCF初探-25:WCF中使用XmlSerializer类

    前言 在上一篇WCF序列化和反序列化中,文章介绍了WCF序列化和反序列化的机制,虽然WCF针对序列化提供了默认的DataContractSerializer序列化引擎,但是WCF还支持其他的序列化引擎 ...

  5. WCF XmlSerializer GetType 反射类型 报错 解决方案

    为图省事,用现有的EF,和web一起使用一个Model类 当进行到 XmlSerializer xmlSerializer = new XmlSerializer(obj.GetType()); 会报 ...

  6. XmlSerializer(Type type, Type[] extraTypes) 内存泄漏

    在使用XmlSerializer进行序列化或者反序列的时候,对于下面的两个构造方法 XmlSerializer(Type)XmlSerializer.XmlSerializer(Type, Strin ...

  7. 拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“IIS APPPOOL\UGAS”没有访问 temp 目录的足够权限

    在部署IIS时候会出现下图错误,拒绝访问 temp 目录.用来运行 XmlSerializer 的标识“IIS APPPOOL\UGAS”没有访问 temp 目录的足够权限 解决方法: 在IIS信息管 ...

  8. ASP.NET XmlSerializer权限问题

    今天碰到一个奇怪问题.因为在2台服务器上做文件共享,使服务器A能访问服务器B的共享目录.在IIS上使用虚拟目录实现的话,需要给应用程序池指定一个统一的账号.在调试的时候能够使用,但是一部署到服务器上, ...

  9. 使用XmlSerializer序列化可空属性

    使用XmlSerializer可以方便的将对象序列化为xml,实现应用之间的数据交互.但是XmlSerializer却不能很好地序列化类型中的可空字段. 例如,有如下定义的类Person: [Seri ...

  10. .NET调用外部接口将得到的List数据,并使用XmlSerializer序列化List对象成XML格式

    BidOpeningData.BidSupervisionSoapClient client = new BidOpeningData.BidSupervisionSoapClient(); Dict ...

随机推荐

  1. Delphi通过调用COM对象实现更改桌面壁纸

    从前我也是用SystemParametersInfo这API来改桌面壁纸的,问题多多,也不知道哪错了,就没深究下去.看了CSDN的帖子后,大彻大悟~~         在XP下,SystemParam ...

  2. delphi 打开文件夹并定位到一个文件(使用ShellExecute时加一个select参数,原来这么简单!)

    strFileName := FcxLV[nIndex].Items.Item[FcxLV[nIndex].ItemIndex].SubItems.Strings[0]; //路径  ShellExe ...

  3. 初识Java--线程同步(2)

    本文讲述Java中的线程同步和生产者消费者问题,其中主要涉及线程同步和wait().notify()方法的用法. wait和notify方法只能用在线程同步中,wait和notify是object的方 ...

  4. php 获取汉字拼音首字母的函数

    function getFirstChar($string){ if($string{0}>="A" and $string{0}<="z" )re ...

  5. android listview 三种适配器设置

    1: public class ArrayAdapterActivity extends ListActivity { @Override public void onCreate(Bundle sa ...

  6. Hibernate的介绍

    1.什么是Hibernate? 首先,Hibernate是数据持久层的一个轻量级框架.数据持久层的框架有非常多比方:iBATIS,myBatis,Nhibernate,Siena等等. 而且Hiber ...

  7. HBASE学习笔记--shell

    Hbase shell 启动 下载安装hbase client包,填写相关配置后进入,配置相关说明可以参见配置篇 指令:./bin/hbase shell 状态及配置信息查询 查询服务器状态 stat ...

  8. 在 IIS 中配置 ASP.NET 应用程序

     注意事项: 1.注册.NET 如果先安装.net平台,后安装IIS,那么在IIS中可能就没有出现ASP.NET版本的下拉菜单,就要手动注册: 一般.Net版本都存放在:C:\WINDOWS\Micr ...

  9. Oracle EBS 如何月结、对账[Z]

    在Oracle系统处理月结业务时,需要遵循一定的操作顺序.这些业务,牵涉到相应的模块,包括:应付模块.采购模块.库存模块.应收模块.薪资模块.固定资产和总帐模块等 在Oracle系统中,总帐模块处于财 ...

  10. 关于new 和delete

    这是百度知道上的答案,感觉讲的很生动形象,接下来要搞清楚的是new是关键字还是函数,new可以重载吗? 你想弄懂这个问题,首先你要弄清楚数据的3种存储方式. 1.静态区: 全局变量. 2.堆: 程序执 ...