C#语言基础问题14:C# 中如何进行 XML 序列化和反序列化?

文章介绍了C#中如何使用XmlSerializer类进行XML序列化和反序列化,包括将对象转换为XML字符串以及从XML字符串恢复对象。示例展示了如何通过特性如XmlAttribute和XmlElement指定对象属性与XML元素的映射,并强调了在处理过程中注意异常和I/O操作的重要性。
摘要由CSDN通过智能技术生成

在 C# 中,XML 序列化是指将对象转换为 XML 格式的字符串,以便于保存到文件或网络中。而反序列化则是将 XML 格式的字符串转换回对象。C# 提供了一组类和方法来支持 XML 序列化和反序列化。

  1. XmlSerializer 类:用于将对象序列化为 XML 格式的字符串,或将 XML 格式的字符串反序列化为对象。
  2. XmlRootAttribute 类:指定对象在 XML 中的根元素的名称。
  3. XmlElementAttribute 类:指定对象在 XML 中的元素的名称和命名空间。
  4. XmlAttributeAttribute 类:指定对象在 XML 中的属性的名称和命名空间。

下面是一个 XML 序列化和反序列化的示例代码:

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

public class Person
{
    [XmlAttribute("id")]
    public int Id { get; set; }

    [XmlElement("name")]
    public string Name { get; set; }

    [XmlElement("age")]
    public int Age { get; set; }

    [XmlElement("gender")]
    public string Gender { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // 创建 Person 对象
        Person person = new Person
        {
            Id = 1,
            Name = "Alice",
            Age = 18,
            Gender = "Female"
        };

        // 将 Person 对象序列化为 XML 格式的字符串
        XmlSerializer serializer = new XmlSerializer(typeof(Person));
        StringWriter writer = new StringWriter();
        serializer.Serialize(writer, person);
        string xml = writer.ToString();

        Console.WriteLine("Serialized XML:");
        Console.WriteLine(xml);

        // 将 XML 格式的字符串反序列化为 Person 对象
        StringReader reader = new StringReader(xml);
        Person deserializedPerson = (Person)serializer.Deserialize(reader);

        Console.WriteLine("Deserialized Person:");
        Console.WriteLine("Id: " + deserializedPerson.Id);
        Console.WriteLine("Name: " + deserializedPerson.Name);
        Console.WriteLine("Age: " + deserializedPerson.Age);
        Console.WriteLine("Gender: " + deserializedPerson.Gender);
    }
}

在这个示例中,我们首先创建了一个 Person 类,定义了该类的属性和 XML 元素的映射关系。然后,使用 XmlSerializer 类将 Person 对象序列化为 XML 格式的字符串,或将 XML 格式的字符串反序列化为 Person 对象。在序列化和反序列化的过程中,我们可以使用 StringWriter 和 StringReader 类将对象和 XML 格式的字符串相互转换。

需要注意的是,在使用 XmlSerializer 进行序列化和反序列化时,需要为要序列化或反序列化的类的每个属性添加适当的 XML 元素属性,以确保序列化和反序列化的正确性。同时,由于序列化和反序列化会涉及到网络或文件 I/O,所以需要注意处理异常情况,确保程序的健壮性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

影像熊猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值