(转)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序 ...
随机推荐
- C++ Primer 随笔 Chapter 4 数组和指针
1.数组:数组是由类型名.标识符和维数组成的符合数据类型,类型名规定了存放在数组中的元素类型,维数规定数组中包含元素的个数而标识符就是数组的名称.例如: int arr[10]; 其中 int 是类 ...
- hadoop2.2编程: Interation
继承关系: 1.java.lang.Object |_ org.apache.hadoop.io.BinaryComparable |_ org.apache.hadoop.io.Text //des ...
- C#获取文件的当前路径
C#获取文件的当前路径 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName -获取模块的完整路径. 2.Syst ...
- 用C++试着完成Python简明教程后面的练习
试图存取文件的部分无法完成.代码已提交到github.
- Lua运算符
+ 加- 减* 乘/ 除^ 幂% 求余# 求长度= 赋值< 小于> 大于== 等于<= 不大于=> 不小于~= 不等于and 逻辑与or 逻辑或not 逻辑非.. 连接字符串
- Reason: Server is in single user mode. Only one administrator can connect at this time
单击Start→All Programs→Microsoft SQL Server 2008→Configuration Tools→SQL Server Configuration Manager. ...
- HTTP 错误 404.3 - Forbidden
在iis中能够浏览所有扩展名的文件时,IIS MIME的 映射 您只能在故障排除过程中将通配符映射添加到 IIS MIME 映射中,以作为一种临时解决方案.确定缺少 MIME 类型是问题的原因后,请删 ...
- Hdu 4311-Meeting point-1 曼哈顿距离,前缀和
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4311 Meeting point-1 Time Limit: 2000/1000 MS (Java/Oth ...
- [ZETCODE]wxWidgets教程二:辅助类
本教程原文链接:http://zetcode.com/gui/wxwidgets/helperclasses/ 翻译:瓶哥 日期:2013年11月27日星期三 邮箱:414236069@qq.com ...
- Netbeans代码配色主题大搜集
我用netbeans的原因之一就是因为其支持代码配色主题,这是个对于一个代码配色字体控来说是非常重要的一个功能.理所当然的,我也会收集各种配色主题来时常换换口味. 下面就是我目前收集的Netbeans ...