使用XmlSerializer可将对象序列化为XML,需定义公共属性和默认构造函数,通过特性如XmlRoot、XmlElement等自定义格式,支持单个对象与集合的序列化输出。

在.NET或其他编程环境中,将对象序列化为XML是一种常见的数据交换方式。通过序列化,可以将内存中的对象转换为XML格式的字符串,便于存储或传输。以下是实现对象序列化为XML的基本方法与示例。
使用.NET中的XmlSerializer进行序列化
XmlSerializer 是 .NET 中用于将对象序列化为XML的主要类。它支持公共属性和字段,并能自动生成符合结构的XML。
基本步骤如下:
- 定义一个可序列化的类,使用 [Serializable] 或确保类有默认构造函数
- 创建 XmlSerializer 实例,指定类型
- 调用 Serialize 方法,输出到文件或 StringWriter
using System;
using System.IO;
using System.Xml.Serialization;
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}
class Program
{
static void Main()
{
var person = new Person
{
Name = "张三",
Age = 30,
City = "北京"
};
var serializer = new XmlSerializer(typeof(Person));
using (var writer = new StringWriter())
{
serializer.Serialize(writer, person);
string xmlResult = writer.ToString();
Console.WriteLine(xmlResult);
}
}
}
输出结果:
控制XML输出格式(使用特性)
可以通过添加 System.Xml.Serialization 命名空间下的特性来定制XML结构。
- [XmlElement("CustomName")]:更改元素名称
- [XmlAttribute]:将属性序列化为XML属性而非子元素
- [XmlRoot("CustomRoot")]:定义根元素名称
- [XmlIgnore]:忽略某个属性不序列化
[XmlRoot("用户")]
public class Person
{
[XmlElement("姓名")]
public string Name { get; set; }
[XmlAttribute("年龄")]
public int Age { get; set; }
[XmlIgnore]
public string City { get; set; }
}
输出示例:
张三姓名>
用户>
序列化集合或数组
也可以将对象列表序列化为XML。XmlSerializer 支持泛型集合和数组。
例如,序列化 List
var people = new List{ new Person { Name = "张三", Age = 30 }, new Person { Name = "李四", Age = 25 } }; var serializer = new XmlSerializer(typeof(List )); using (var writer = new StringWriter()) { serializer.Serialize(writer, people); Console.WriteLine(writer.ToString()); }
基本上就这些。只要对象结构清晰并正确使用特性,就能方便地将对象转为XML格式。注意类必须有公共属性和默认构造函数,否则可能抛出异常。










