C# XML 的序列化和反序列化
来源:互联网 发布:水利预算软件app 编辑:程序博客网 时间:2024/05/20 15:12
1.xml 集合序列化和发序列化
1.1 对象结构
public class People
{
[XmlAttribute("NAME")]
public string Name
{ set; get; }
[XmlAttribute("AGE")]
public int Age
{ set; get; }
}
[XmlRoot("Root")]
public class Student : People
{
[XmlElement("CLASS")]
public string Class
{ set; get; }
[XmlElement("NUMBER")]
public int Number
{ set; get; }
}
2.对象序列化为 xml 文件
public void ToXML()
{
List<Student> stuList = new List<Student>();
stuList.Add(new Student() { Age = 10, Number = 1, Name = "Tom", Class = "Class One" });
stuList.Add(new Student() { Age = 11, Number = 2, Name = "Jay", Class = "Class Two" });
stuList.Add(new Student() { Age = 12, Number = 3, Name = "Pet", Class = "Class One" });
stuList.Add(new Student() { Age = 13, Number = 4, Name = "May", Class = "Class Three" });
stuList.Add(new Student() { Age = 14, Number = 5, Name = "Soy", Class = "Class Two" });
XmlSerializer ser = new XmlSerializer(typeof(List<Student>));
ser.Serialize(File.Create("C:\\x.xml"), stuList);
}
3.序列化后 xml 内容
<?xml version="1.0"?>
<ArrayOfStudent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Student NAME="Tom" AGE="10">
<CLASS>Class One</CLASS>
<NUMBER>1</NUMBER>
</Student>
<Student NAME="Jay" AGE="11">
<CLASS>Class Two</CLASS>
<NUMBER>2</NUMBER>
</Student>
<Student NAME="Pet" AGE="12">
<CLASS>Class One</CLASS>
<NUMBER>3</NUMBER>
</Student>
<Student NAME="May" AGE="13">
<CLASS>Class Three</CLASS>
<NUMBER>4</NUMBER>
</Student>
<Student NAME="Soy" AGE="14">
<CLASS>Class Two</CLASS>
<NUMBER>5</NUMBER>
</Student>
</ArrayOfStudent>
4.将 xml 反序列化为对象
public List<Student> ToStudent()
{
XmlSerializer ser = new XmlSerializer(typeof(List<Student>));
List<Student> stuList = ser.Deserialize(File.OpenRead("C:\\x.xml")) as List<Student>;
return stuList;
}
5.测试脚本
5.1测试类
public class Test
{
public class People
{
[XmlAttribute("NAME")]
public string Name
{ set; get; }
[XmlAttribute("AGE")]
public int Age
{ set; get; }
}
[XmlRoot("Root")]
public class Student : People
{
[XmlElement("CLASS")]
public string Class
{ set; get; }
[XmlElement("NUMBER")]
public int Number
{ set; get; }
}
public void ToXML()
{
List<Student> stuList = new List<Student>();
stuList.Add(new Student() { Age = 10, Number = 1, Name = "Tom", Class = "Class One" });
stuList.Add(new Student() { Age = 11, Number = 2, Name = "Jay", Class = "Class Two" });
stuList.Add(new Student() { Age = 12, Number = 3, Name = "Pet", Class = "Class One" });
stuList.Add(new Student() { Age = 13, Number = 4, Name = "May", Class = "Class Three" });
stuList.Add(new Student() { Age = 14, Number = 5, Name = "Soy", Class = "Class Two" });
XmlSerializer ser = new XmlSerializer(typeof(List<Student>));
ser.Serialize(File.Create("C:\\x.xml"), stuList);
}
public List<Student> ToStudent()
{
XmlSerializer ser = new XmlSerializer(typeof(List<Student>));
List<Student> stuList = ser.Deserialize(File.OpenRead("C:\\x.xml")) as List<Student>;
return stuList;
}
}
5.2测试脚本
private void btnOk_Click(object sender, EventArgs e)
{
Test t = new Test();
t.ToXML();
t.ToStudent();
}
注意:xml 的存储结构类似 C# 中的继承,所以如果节点有嵌套,需要考虑是否需要用到类继承的数据结构。
参考:http://apps.hi.baidu.com/share/detail/137402
- C# 对象的xml序列化和反序列化
- C# XML 的序列化和反序列化
- C#的序列化和反序列化 TEST -XML
- C# 中XML的序列化和反序列化
- C#中XML序列化和反序列化初探
- C# 二进制、Xml、Json序列化和反序列化
- c# xml序列化和反序列化
- C# XML序列化和反序列化
- C# XML序列化和反序列化
- C#对象的 Xml序列化与反序列化
- C# 序列化反序列化XML的帮助类
- XML序列化和反序列化
- XML序列化和反序列化
- Xml序列化和反序列化
- XML序列化和反序列化
- xml序列化和反序列化
- XML序列化和反序列化
- XML序列化和反序列化
- 在linux2.6.37上添加MCP251x驱动
- Using jQuery with Client-Side Data Binding
- Download stevens.advprog.tar.Z
- C程序中函数指针
- 饭客网络(基础教程)
- C# XML 的序列化和反序列化
- unix 环境高级编成 apue.h ,apueerror.h的代码
- Fix: .Net 2.0 or 3.5 Setup Project Requires .Net Framework version 4.0
- 图像地图
- java IO (七) 扩展应用
- 放假了,看看c语言
- #define的用法
- HOW TIME FLIES
- UseSubmitBehavior (前章)