当前位置:首页 > C# > 正文

C# XML序列化详解(XmlSerializer完整入门教程)

在C#开发中,经常需要将对象保存为XML格式,或者从XML文件中读取数据并还原为对象。这时,XmlSerializer 就派上用场了!本教程将手把手教你如何使用 XmlSerializer 进行C# XML序列化和反序列化,即使你是编程小白也能轻松掌握。

C# XML序列化详解(XmlSerializer完整入门教程) XML序列化  XmlSerializer教程 C#对象转XML .NET XML操作 第1张

什么是XML序列化?

XML序列化是指将C#中的对象转换为XML格式的字符串或文件的过程;而反序列化则是将XML数据还原为原始对象。这种技术广泛应用于配置文件存储、数据交换、Web服务通信等场景。

准备工作:添加必要命名空间

使用 XmlSerializer 前,你需要在代码顶部引入以下命名空间:

using System;using System.IO;using System.Xml.Serialization;

第一步:定义可序列化的类

要使用 XmlSerializer,你的类必须满足以下条件:

  • 具有公共无参构造函数(默认就有)
  • 需要序列化的字段或属性必须是 public 的

下面是一个简单的 Person 类示例:

public class Person{    public string Name { get; set; }    public int Age { get; set; }    public string Email { get; set; }}

第二步:将对象序列化为XML

使用 XmlSerializer 将对象写入XML文件的完整代码如下:

// 创建一个Person对象Person person = new Person{    Name = "张三",    Age = 28,    Email = "zhangsan@example.com"};// 创建XmlSerializer实例,指定类型为PersonXmlSerializer serializer = new XmlSerializer(typeof(Person));// 使用StreamWriter将对象写入XML文件using (StreamWriter writer = new StreamWriter("person.xml")){    serializer.Serialize(writer, person);}Console.WriteLine("对象已成功序列化为XML文件!");

运行后,会在项目目录下生成 person.xml 文件,内容类似:

<?xml version="1.0" encoding="utf-8"?><Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xmlns:xsd="http://www.w3.org/2001/XMLSchema">  <Name>张三</Name>  <Age>28</Age>  <Email>zhangsan@example.com</Email></Person>

第三步:从XML反序列化为对象

现在我们把刚才生成的XML文件读回来,还原成 Person 对象:

XmlSerializer deserializer = new XmlSerializer(typeof(Person));using (StreamReader reader = new StreamReader("person.xml")){    Person loadedPerson = (Person)deserializer.Deserialize(reader);    Console.WriteLine($"姓名: {loadedPerson.Name}");    Console.WriteLine($"年龄: {loadedPerson.Age}");    Console.WriteLine($"邮箱: {loadedPerson.Email}");}

高级技巧:自定义XML结构

你还可以通过特性(Attributes)控制生成的XML结构。例如:

public class Person{    [XmlElement("FullName")]    public string Name { get; set; }    [XmlAttribute("YearsOld")]    public int Age { get; set; }    public string Email { get; set; }}

这样生成的XML会变成:

<Person YearsOld="28">  <FullName>张三</FullName>  <Email>zhangsan@example.com</Email></Person>

常见问题与注意事项

  • 只支持public成员:private 或 internal 字段不会被序列化。
  • 不支持循环引用:XmlSerializer 无法处理对象之间的循环依赖。
  • 性能考虑:首次创建 XmlSerializer 实例较慢,建议缓存实例以提高性能。
  • 异常处理:反序列化时若XML格式不符,会抛出 InvalidOperationException,建议用 try-catch 包裹。

总结

通过本教程,你已经掌握了在C#中使用 XmlSerializer 进行XML序列化和反序列化的基本方法。这项技能对于处理配置文件、API数据交换等场景非常实用。记住关键点:类要 public、属性要 public、善用特性控制输出格式。

希望这篇 .NET XML操作 教程对你有帮助!如果你正在学习 C#对象转XML,不妨动手试试上面的代码,加深理解。

关键词回顾:C# XML序列化XmlSerializer教程C#对象转XML.NET XML操作