使用 Visual C# 将对象序列化为 XML
本文提供了有关如何使用 Visual C# 将对象序列化为可扩展标记语言(XML)的方法。
原始产品版本: Visual Studio
原始 KB 数: 815813
总结
本文中所述的方法可用于保存对象的状态。 此方法还可用于通过将 XML 反序列化回新对象来克隆对象。
本文介绍以下Microsoft .NET Framework 类库命名空间:
System.Xml
System.Xml.Serialization
要求
本文假定你熟悉以下主题:
- Visual Studio
- 对 XML 的一般熟悉
- 一般熟悉 Visual C#
XML 序列化
序列化是获取对象状态并采用某种方式保存它的过程。 .NET Framework 包括可将任何对象序列化为 XML 的强大对象。 命名空间 System.Xml.Serialization
提供此功能。
按照以下步骤创建一个创建对象的控制台应用程序,然后将其状态序列化为 XML:
在 Visual C# 中,创建新的控制台应用程序项目。
在 “项目 ”菜单上,选择“ 添加类 ”以向项目添加新类。
在 “添加新项 ”对话框中,将类的名称更改为 clsPerson。
选择 添加 。 将创建一个新类。
在公共类
clsPerson
语句后面添加以下代码。public string FirstName; public string MI; public string LastName;
切换到 Visual Studio 中Program.cs的代码窗口。
在方法中
void Main
,声明并创建类的clsPerson
实例:clsPerson p = new clsPerson();
设置对象的属性
clsPerson
:p.FirstName = "Jeff"; p.MI = "A"; p.LastName = "Price";
命名空间
Xml.Serialization
包含将XmlSerializer
对象序列化为 XML 的类。 创建实例XmlSerializer
时,将想要序列化的类的类型传递到其构造函数中:System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
该方法
Serialize
用于将对象序列化为 XML。 序列化是重载的,可以向或TextWriter
Stream
XMLWriter
对象发送输出。 在此示例中,将输出发送到控制台:x.Serialize(Console.Out,p); Console.WriteLine(); Console.ReadLine();
完整代码清单
using System;
public class clsPerson
{
public string FirstName;
public string MI;
public string LastName;
}
class class1
{
static void Main(string[] args)
{
clsPerson p=new clsPerson();
p.FirstName = "Jeff";
p.MI = "A";
p.LastName = "Price";
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
x.Serialize(Console.Out, p);
Console.WriteLine();
Console.ReadLine();
}
}
验证
若要验证项目是否正常工作,请按 Ctrl+F5 运行项目。 将创建一个 clsPerson
对象,并填充输入的值。 此状态序列化为 XML。 控制台窗口显示以下代码:
<?xml version="1.0" encoding="IBM437"?>
<clsPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FirstName>Jeff</FirstName>
<MI>A</MI>
<LastName>Price</LastName>
</clsPerson>
疑难解答
该 Xml.Serialization.XmlSerializer
对象仅执行浅层序列化。 如果还需要序列化对象或子对象的私有变量,则必须使用深度序列化。