在C#中,使用`System.Xml.Serialization`命名空间下的类可以实现XML文件的序列化和反序列化。以下是一个简单的示例,展示了如何序列化一个对象到XML文件,以及如何从XML文件反序列化回对象。
首先,我们需要一个可序列化的类。为了简化,我们定义一个`Person`类:
using System;
using System.Xml.Serialization;
// 标记类为可序列化
[Serializable]
[XmlRoot("Person")] // 指定根元素名称
public class Person
{
[XmlElement("Name")] // 指定元素名称
public string Name { get; set; }
[XmlElement("Age")]
public int Age { get; set; }
// 构造函数
public Person() { }
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
然后,我们需要编写序列化和反序列化的方法:
using System;
using System.IO;
using System.Xml.Serialization;
public class XmlSerializerHelper
{
// 序列化到XML文件
public static void SerializeObjectToXml<T>(T obj, string filePath)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextWriter textWriter = new StreamWriter(filePath))
{
serializer.Serialize(textWriter, obj);
}
}
// 从XML文件反序列化
public static T DeserializeObjectFromXml<T>(string filePath)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
return (T)serializer.Deserialize(fileStream);
}
}
}
现在,我们可以使用这个帮助类来序列化和反序列化`Person`对象:
class Program
{
static void Main(string[] args)
{
Person person = new Person("John Doe", 30);
// 序列化到XML文件
string filePath = "person.xml";
XmlSerializerHelper.SerializeObjectToXml(person, filePath);
// 从XML文件反序列化
Person deserializedPerson = XmlSerializerHelper.DeserializeObjectFromXml<Person>(filePath);
Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
}
}
这段代码首先创建了一个`Person`对象,并将其序列化到名为`person.xml`的文件中。然后,它从这个文件中反序列化出一个`Person`对象,并打印出这个对象的`Name`和`Age`属性。
请确保您的项目引用了`System.Xml.Serialization`和`System.IO`命名空间,以便使用上述代码。