C#中XML序列化与反序列化实战教程
5星 · 超过95%的资源 需积分: 6 137 浏览量
更新于2024-09-13
收藏 68KB DOC 举报
“xml 和C#序列化与反序列化”
在C#编程中,序列化和反序列化是将对象的状态转换为可存储或传输的形式(如XML、JSON或二进制),然后从这种形式恢复对象的过程。这个过程在很多场景下都非常有用,例如保存用户配置、跨网络传输数据或者持久化对象状态。本资源主要关注使用XML进行序列化和反序列化的方法。
XML序列化允许我们将C#对象转换为XML文档,这在不支持二进制序列化(如在WinCE环境下)的情况下尤其有用。以下是如何在C#中实现XML序列化和反序列化的示例:
首先,定义一个可序列化的类,使用`[XmlAttribute]`和`[XmlElement]`等特性来指定属性在XML中的表示方式。例如:
```csharp
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; }
}
```
在上面的例子中,`Student`类继承自`People`类,并且都有对应的XML元素或属性。`[XmlRoot]`用于指定XML根元素的名称。
接下来,我们可以使用`System.Xml.Serialization`命名空间中的`XmlSerializer`类来进行序列化和反序列化操作:
```csharp
void Main(string[] args)
{
Student stu = new Student()
{
Age = 10,
Class = "ClassOne",
Name = "Tom",
Number = 1
};
// 序列化对象到XML文件
XmlSerializer ser = new XmlSerializer(typeof(Student));
ser.Serialize(File.Create("C:\\x.xml"), stu);
// 反序列化XML文件到对象
using (FileStream fs = File.OpenRead("C:\\x.xml"))
{
Student deserializedStu = (Student)ser.Deserialize(fs);
}
}
```
这段代码首先创建了一个`Student`对象并设置了其属性值,然后使用`XmlSerializer`将其序列化到名为“x.xml”的文件中。反序列化时,我们打开这个文件并使用`Deserialize`方法恢复对象。
对于对象数组的序列化,可以扩展这个概念,通过创建一个包含多个对象的列表或数组,然后在序列化时传递整个集合。例如:
```csharp
List<Student> students = new List<Student>
{
new Student { ... },
new Student { ... },
// 添加更多学生对象
};
// 序列化对象数组
using (FileStream fs = File.Create("C:\\students.xml"))
{
XmlSerializer arraySerializer = new XmlSerializer(typeof(List<Student>));
arraySerializer.Serialize(fs, students);
}
// 反序列化对象数组
using (FileStream fs = File.OpenRead("C:\\students.xml"))
{
List<Student> deserializedStudents = (List<Student>)arraySerializer.Deserialize(fs);
}
```
这样,整个对象数组就被序列化为一个XML文件,之后可以从该文件中反序列化回原来的列表。
XML序列化和反序列化在C#中是一种强大的工具,它使得数据能够在各种环境中传输和存储,同时也方便了对象的持久化和跨平台操作。通过正确使用XML特性,我们可以精确控制对象在XML中的表示,确保数据的准确性和兼容性。
2020-07-01 上传
2022-11-13 上传
2024-01-05 上传
2015-08-21 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
W3C18239
- 粉丝: 3
- 资源: 2
最新资源
- Python tkinter编写的科学计算器程序
- 祖国母亲的项链flash动画
- Redirector:WordPress重定向器插件
- RominManogil_3_02032020:Projet N°3开放式教室
- gostack-template-fundamentos-reactjs
- SHR-crx插件
- 毕业设计&课设-工程硕士学术项目.zip
- KVStorage:喜欢Android的键值数据库,一个简单的容易使用的Kv数据库
- XS:具有功能语义和常规语法的可扩展外壳(从es和rc降序)
- 快乐小猪英文歌flash动画
- C#制作一个可以旋转的饼型图
- 毕业设计&课设-基于MATLAB的UWV仿真.zip
- Ecommerce_Backend
- 美术课件画太阳flash动画
- BiteCodeLab2
- unifiapi:与UBNT Unifi控制器进行交互的Python代码