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. 8.2.5: Spring3.0新增的@DependsOn和@Lazy

    @DependsOn用于强制初始化其他Bean.可以修饰Bean类或方法,使用该Annotation时可以指定一个字符串数组作为参数,每个数组元素对应于一个强制初始化的Bean. @DependsOn ...

  2. floodlight 学习(一)

    其实这个控制器应该没有多少人用了吧,一年多都没更新了,鉴于最近无论如何都要用这个,将学习笔记贴出来吧. 1.FloodlightProvider(Dev) 1.1简介:FloodlightProvid ...

  3. git使用三把斧

    git status                                           -查看哪些更改 git add file1 file2                     ...

  4. Struts2 请求参数接收

    在Struts2中提供了更为简单的参数请求与接收方法,可以直接在Action中定义属性:Struts2通过反射机制将参数反射到属性的set方法上实现参数的传递: GET方式传送参数 <strut ...

  5. JSF简单介绍

    JSF简单介绍 一. 什么是 JSF: JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架.它提供了一种以组件为中心来开发 Java Web 用户界 ...

  6. 使用Vitamio打造自己的Android万能播放器(1)——准备

    前言 虽然Android已经内置了VideoView组件和MediaPlayer类来支持开发视频播放器,但支持格式.性能等各方面都十分有限,这里与大家一起利用免费的Vitamio来打造属于自己的And ...

  7. DevExpress控件之:ChartControl 动态绑定数据

    private void BindData(ViewType vt) { chartControl1.Series.Clear(); //Series series1 = new Series(&qu ...

  8. javascript高级知识点——函数的长度

    代码信息来自于http://ejohn.org/apps/learn/. 函数的长度属性如何工作? function makeNinja(name){} function makeSamurai(na ...

  9. Nutch2.3分布执行过程中Mongodb中数据的变化

    inject $ nutch inject /opt/nutch/runtime/local/urls/ > db.stats() { "db" : "nutch& ...

  10. 微信sdk (1)

    <?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); ...