(转)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序 ...
随机推荐
- linux系统目录详解
Linux目录结构包括文件类型和一些重要的文件子目录. linux文件系统的最顶端是/,称为linux的root,所有的目录.文件.设备都在/之下.文件类型linux有四种基本文件系统类型:普通文件. ...
- WordPress Videowall插件‘page_id’参数跨站脚本漏洞
漏洞名称: WordPress Videowall插件‘page_id’参数跨站脚本漏洞 CNNVD编号: CNNVD-201310-502 发布时间: 2013-10-23 更新时间: 2013-1 ...
- 动态规划(树形DP):LNOI 2016 侦察守卫
Sample Input 12 2 8 9 12 6 1 1 5 1 4 8 10 6 10 1 2 3 5 6 7 8 9 10 11 1 3 2 3 3 4 4 5 4 6 4 7 7 8 8 9 ...
- Power Strings
Power Strings TimeLimit: 1 Second MemoryLimit: 32 Megabyte Totalsubmit: 1791 Accepted: 528 Descr ...
- glsl-BufferObject- change
修改其值的最快方式: 创建: Mutable Storage To create mutable storage for a buffer object, you use this API: void ...
- 主流智能手机屏幕材质介绍 及 LCD闪屏现象分析
TN TN(Twisted Nematic) 即扭曲向列型面板,属于有源矩阵液晶显示器中的一种.由于TFT是主动式矩阵LCD可让液晶的排列方式具有记忆性,不会在电流消失后马上恢复 ...
- nyoj 1185 最大最小值【线段树最大值最小值维护】
最大最小值 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给出N个整数,执行M次询问. 对于每次询问,首先输入三个整数C.L.R: 如果C等于1,输出第L个数到第R ...
- hdoj 1286 找新朋友【欧拉函数】
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- Eclipse的安装以及与Tomcat的集成
1.下载indgo版本的Eclipse:http://www.eclipse.org(64位:eclipse-jee-indigo-SR2-win32-x86_64.zip) 2.解压到D:\Prog ...
- Let's Encrypt+Apache+Tomcat实现免费HTTPS
Let's Encrypt是一个免费SSL证书发行项目,发行的证书已经获得主流浏览器的支持,亲测谷歌浏览器(桌面版).火狐浏览器(桌面版).UC浏览器(手机版).360浏览器(手机版)支持,其它的暂没 ...