在 .NET Framework 中提供两种串行化方法,一种是二进制法,另一种是xml串行化。

序列化是将对象状态转换为可保持或传输的格式的过程,xml序列化是将对象的公共字段和属性序列化为xml流。由于xml是一个开放式标准,因此对于通过web共享数据而言,这是一个很好的选择。

将对象序列化,可以将对象状态永久保存在存储媒体上,以便可以在以后创建更精确的副本;同时,通过值可以将对象一个应用程序域发送到另一个应用程序域中。

xml序列化中最主要的类是XmlSerializer 类,它的最重要的方法是Serializer和Deserializer方法。使用xmlSerializer可以将以下几项序列化:公共类的公共读/写属性,字段; 实现ICollection或IEnumerable的类;xmlElement对象;xmlNode对象;Dataset对象。下面以一个很简单的例子演示一下:

首先导入命名空间:using System.Xml.Serialization;和using System.IO;并且创建一个student类:

//创建一个公共类
        public class Student
        {
            public string studentName = null;
            public int studentAge = 0;
            private decimal money = 0;

public decimal Money
            {
                get { return money; }
                set { money = value; }
            }

}

然后在主方法里序列化:

static void Main()

{

//1.创建对象并赋值它的公共字段和属性。

Student st = new Student();

st.studentName = "李四“, st.studentAge = 20;

//2.使用该对象的类型构造 XmlSerializer

XmlSerializer myxml=new XmlSerializer(typeof(Student));

//3.创建一个StreamWriter对象

StreamWriter sw = new StreamWriter("student.xml");

//3.调用Serialize方法生成对象的XML流形式或文件形式。

myxml.Serialize(sw, st);

sw.Close();         }

序列化数组这里就不写了,有兴趣的可以一起讨论。

与xml序列化对应的是xml反序列化,这里我就用一个dataset实例说明序列化与反序列化:

首先序列化DataSet:

DataSet ds=new DataSet();

DataTable dt=new DataTable("st");

DataColumn dc=new DataColumn("学号",typeof(int));

dt.Columns.Add(dc);

dc=new DataColumn("姓名",typeof(string));

dt.Column.Add(dc);

DataRow dr=dt.newRow();

dr["学号"]=1001;  dr["姓名"]="小王";

dt.Rows.Add(dr);

ds.Table.Add(dt);

xmlSerializer xs=new xmlSerializer(typeof(Dataset));

TextWriterts tw=new StreamWriter("zw.xml");

xs.Seralizer(tw,ds);

反序列化:

DataSet ds=new DataSet();

DataTable dt=new DataTaBle("st");

ds.Tables.Add(dt);

xmlserializer xs=new xmlserializer(typeof(DataSet));

Filestream fs=new  FileStram("路径",FileMode.Open);

ds=(DataSet)xs.DeSerializer(fs);

for(int i=0;i<ds.Tables["st"].Rows.count;i++)

{

Console.WriteLine(ds.Table["st"].Rows[i][""].Tostring());

}

public class Student

{

public string studentName;

public int studentAge;

}

(转)xml序列化的更多相关文章

  1. [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类

    [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...

  2. .NET中XML序列化的总结

    [题外话] 以前虽然常用.NET中的序列化,但是常用的BinaryFormatter,也就是二进制文件的序列化,却鲜用XML的序列化.对于XML序列化,.NET中同样提供了一个非常方便的工具XmlSe ...

  3. XML序列化和反序列化

    上篇总结了下JSON的序列化和反序列化,博园中大牛给了很多牛叉的评论,学习了不少. 不过在上篇中忘了把json序列化和反序列化的另外一种方式写上去了,这里做个简单的补充: Json篇:http://w ...

  4. XML 序列化与反序列化

    XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...

  5. 关于XML序列化与CultureInfo

    不同的计算机系统可能有着不同的CultureInfo,例如在中文环境下日期通常这样显示03/30/2016,而在有的操作系统下它可能是这样的30.3.2016. 这样的话带来一个问题,例如在中文环境下 ...

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

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

  7. C#的XML序列化及反序列化

    webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...

  8. .NET XML序列化与反序列化

    闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <ty ...

  9. Windows Phone 七、XML序列化

    DataContractSerializer对象 public class Person { public int Id { get; set; } public string Name { get; ...

  10. Xml 序列化

    1 XML序列化只能序列化对象的公有属性,并且要求对象有一个无参的构造方法,否者无法反序列化. 2 [Serializable]和[NonSerialized]特性对XML序列化无效!所以使用XML序 ...

随机推荐

  1. Electrification Plan(最小生成树)

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=50#problem/D 最小生成树模板,注意的是这里有k个发电站,它们不再需要连 ...

  2. 数学(容斥计数):LNOI 2016 方

    Description 上帝说,不要圆,要方,于是便有了这道题.由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形 上帝把我们派到了一个有N行M列的方格图上,图上一共有(N+1)×(M+1) ...

  3. 转载: Asp.net常见word,excel,ppt,pdf在线预览方案

    参考链接: http://www.cnblogs.com/wolf-sun/p/3569960.html

  4. linux文件权限详解

    一.文件和目录权限概述在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问:允许一 ...

  5. 南京Uber优步司机奖励政策(2月1日~2月7日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  6. Jetty容器集群配置Session存储到MySQL、MongoDB

    在Web开发中,Session表示HTTP服务器与客户端(例如浏览器)的"会话",每个客户端会有其对应的Session保存在服务器端,通常用来保存和客户端关联的一些信息,例如是否登 ...

  7. selenuim +python环境配置遇到的诸多问题

    自动化测试入门,总结一下安装selenium.python以及配置webdriver遇到的问题: 准备工作: 1.下载火狐浏览器并安装插件selenium IDE.Firebug~~ 2.下载安装py ...

  8. 常用对象API、附加:集合补充

    基本数据类型对象包装类: 为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作. 用于描述该对象的类就称为基本数据类型对象包装类. byte——Byte short ...

  9. IOS开发之UINavigationBar

    简介 UINavigationBar是用于实现管理层级关系内容的组件,直接继承自UIView.通常用在UINavgationController类中,用于管理和显示UINavgationControl ...

  10. Plinq-Parallel.ForEach for 性能提升

    https://msdn.microsoft.com/zh-cn/library/dd460720.aspx 本示例显示如何使用 Parallel.ForEach 循环对任何 System.Colle ...