如何通过使用 Visual C# 中序列化到 XML 对象

文章翻译 文章翻译
文章编号: 815813 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本分步指南介绍了如何通过使用 Visual C# 中序列化到 XML 对象。此方法可用于保持对象的状态。此方法还可用于通过 de-serializing XML 返回到一个新的对象克隆的对象。



要求

下面的列表概述了建议的硬件、 软件、 网络的基础结构和所需的服务包:
  • Microsoft Visual Studio
本文假定您熟悉下列主题:
  • 常规熟悉 XML
  • 常规熟悉 Visual C#

XML 序列化

序列化是获取对象的状态并保持它以某种方式的过程。Microsoft.net 框架包括功能强大的对象的可序列化到 XML 的任何对象。System.Xml.Serialization 命名空间提供了此功能。

请按照下列步骤创建一个控制台应用程序,它创建一个的对象,然后将其状态为 XML 序列化操作:
  1. 在 Visual C#,创建新的控制台应用程序项目。
  2. 项目 菜单上单击 添加类 向项目添加一个新的类。
  3. 添加新项 对话框中更改 clsPerson 类的名称。
  4. 单击 添加。创建一个新的类。

    注意在 Visual Studio.net 2003 年单击 打开
  5. 下面的代码添加后,公共类 clsPerson 语句
     public   string FirstName;
     public   string MI;
     public   string LastName;
    
  6. 为 Program.cs Visual Studio 中或在 Visual Studio.net 2003 Class1.cs,请切换到代码窗口。
  7. 将 void 的 Main 方法中声明并创建 clsPerson 类的实例:
    clsPerson p = new clsPerson();
  8. 设置 clsPerson 对象的属性,请执行下列操作:
    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
  9. Xml.Serialization 命名空间包含一个 XmlSerializer 类,将以 XML 对象序列化的。您在创建 XmlSerializer 的实例时传递要序列化到它的构造函数的类的类型:
    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
  10. 序列化到 XML 对象使用 Serialize 方法。序列化重载,可以将输出发送到 TextWriter,或 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 对象执行只浅序列化。如果您还需要序列化一个对象或子对象的私有变量,则必须使用深的序列化。

参考

有关详细的信息,请访问下面的 Microsoft 开发人员网络 (MSDN) 的网站:
介绍 XML 序列化
http://msdn.microsoft.com/en-us/library/182eeyhh(VS.80).aspx

属性

文章编号: 815813 - 最后修改: 2008年7月21日 - 修订: 4.1
这篇文章中的信息适用于:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# .NET 2003 标准版
  • Microsoft Visual C# .NET 2002 标准版
  • Microsoft Visual C# 2005 Express Edition
关键字:?
kbmt kbsweptvs2008 kbnamespace kbxml kbhowtomaster KB815813 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 815813
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com