C# Winform XmlWriter如何序列化一个类到xml文件

在C#中使用XmlWriter手动序列化一个类到XML文件时,你需要对每个属性或字段进行显式的控制。这通常涉及使用WriteStartElementWriteEndElement来创建元素,以及使用WriteAttributeString来写入属性。下面是一个示例,展示了如何使用XmlWriter序列化一个简单的类到XML文件中:

首先,我们定义一个类,比如叫做Person

 

Csharp

深色版本

1public class Person
2{
3    public string Name { get; set; }
4    public int Age { get; set; }
5}

然后,我们创建一个方法来序列化这个类的实例到XML文件中:

 

Csharp

深色版本

1using System;
2using System.IO;
3using System.Xml;
4
5public static void SerializePersonToXml(Person person, string filePath)
6{
7    using (FileStream fs = new FileStream(filePath, FileMode.Create))
8    {
9        using (XmlWriter writer = XmlWriter.Create(fs, new XmlWriterSettings() { Indent = true }))
10        {
11            // 写入XML文档的开头
12            writer.WriteStartDocument();
13
14            // 开始写入根元素
15            writer.WriteStartElement("Person");
16
17            // 写入Name属性
18            writer.WriteStartElement("Name");
19            writer.WriteString(person.Name);
20            writer.WriteEndElement(); // Name
21
22            // 写入Age属性
23            writer.WriteStartElement("Age");
24            writer.WriteValue(person.Age);
25            writer.WriteEndElement(); // Age
26
27            // 结束根元素
28            writer.WriteEndElement(); // Person
29
30            // 写入XML文档的结尾
31            writer.WriteEndDocument();
32        }
33    }
34}

在这个例子中,我们使用了FileStreamXmlWriter来写入XML数据。我们首先创建了一个FileStream实例,然后使用XmlWriter.Create方法创建一个XmlWriter实例,并设置Indent属性为true以便生成的XML文件更易读。

接下来,我们使用WriteStartDocumentWriteEndDocument来分别开始和结束整个XML文档。对于根元素(在本例中是<Person>),我们使用WriteStartElementWriteEndElement来定义它的范围。对于NameAge属性,我们也使用相似的方法来定义它们的元素。

最后,我们通过WriteStringWriteValue方法写入具体的值。WriteValue方法会自动处理数值类型的转换。

要使用这个方法,你可以这样调用它:

 

Csharp

深色版本

1Person person = new Person { Name = "John Doe", Age = 30 };
2string filePath = @"C:\temp\person.xml";
3SerializePersonToXml(person, filePath);

这将会把Person对象序列化到指定路径的XML文件中。请注意,这种方法比较繁琐,如果类的结构复杂或者需要频繁进行序列化操作,推荐使用XmlSerializer类,它可以自动处理序列化过程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值