(转)xml序列化
在 .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序列化的更多相关文章
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...
- .NET中XML序列化的总结
[题外话] 以前虽然常用.NET中的序列化,但是常用的BinaryFormatter,也就是二进制文件的序列化,却鲜用XML的序列化.对于XML序列化,.NET中同样提供了一个非常方便的工具XmlSe ...
- XML序列化和反序列化
上篇总结了下JSON的序列化和反序列化,博园中大牛给了很多牛叉的评论,学习了不少. 不过在上篇中忘了把json序列化和反序列化的另外一种方式写上去了,这里做个简单的补充: Json篇:http://w ...
- XML 序列化与反序列化
XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...
- 关于XML序列化与CultureInfo
不同的计算机系统可能有着不同的CultureInfo,例如在中文环境下日期通常这样显示03/30/2016,而在有的操作系统下它可能是这样的30.3.2016. 这样的话带来一个问题,例如在中文环境下 ...
- 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 ...
- Windows Phone 七、XML序列化
DataContractSerializer对象 public class Person { public int Id { get; set; } public string Name { get; ...
- Xml 序列化
1 XML序列化只能序列化对象的公有属性,并且要求对象有一个无参的构造方法,否者无法反序列化. 2 [Serializable]和[NonSerialized]特性对XML序列化无效!所以使用XML序 ...
随机推荐
- picturebox 图片自适应
picturebox控件共有两种载入图片方式,分别为: pictureBox1.BackgroundImage = Image,pictureBox1.load(url) 为使加载的图片自使用控件尺寸 ...
- 【HDOJ】1180 诡异的楼梯
bfs+优先队列.wa了N次,才发现可以停留等待楼梯变换方向. #include <iostream> #include <queue> #include <cstdio ...
- bzoj1444
显然自动机上高斯消元根据AC自动机上的转移可以列出一系列方程但这个样的方程解出来全0是一组解说明有线性组合的情况考虑除非没人能赢,否则每个人赢的概率和为1那么我们只要把原来的第一个方程换成这个即可 . ...
- bzoj1197
水题,画个图推一下低维的就什么都明白了 从低维类推高维 ..,..] of int64; n,m,j,i:longint; begin readln(m,n); to n do f[i,]:=; to ...
- WordPress get_allowed_mime_types函数(wp-includes/functions.php)存在跨站脚本漏洞
漏洞版本: WordPress 3.6 漏洞描述: CVE ID:CVE-2013-5738 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设 ...
- ☀【移动】Google Maps JavaScript API v3
Google Maps JavaScript API v3https://developers.google.com/maps/documentation/javascript/tutorial?hl ...
- 英语之路 zt
各位为英语而郁闷的兄弟姐妹们: 自从考完GRE和TOEFL以后,心有所感,本想写点心得,但是因为太懒没写成.今日风雨如晦,心中又有所感,于是一舒笔墨,写下我学英语的方法.俺知道有很多兄弟姐妹们和曾经的 ...
- HDU-1598 find the most comfortable road
find the most comfortable road Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- C# 关键字 default
在泛型类和泛型方法中产生的一个问题是,在预先未知以下情况时,如何将默认值分配给参数化类型 T: T 是引用类型还是值类型. 如果 T 为值类型,则它是数值还是结构 http://msdn.micros ...
- Yii 打造带有缓存功能的AR
继承AR类 重写 findByPk方法为pk 还有afterSave afterDelete 通过对象主键缓存其属性 在insert update delete 操作时候 都会自动更新缓存还是挺方 ...