如何使用 Visual C# 序列化為 XML 物件

文章翻譯 文章翻譯
文章編號: 815813 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步告訴您,如何使用 Visual C# 序列化為 XML 物件。這個方法很有用的保存物件狀態。這個方法也很有用的複製物件由 de-serializing XML 至新的物件。



需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及所需的 Service Pack:
  • Microsoft Visual Studio
本文假設您已熟悉下列主題:
  • 一般熟悉 XML
  • 一般的熟悉度與 Visual C#

XML 序列化

序列化是取得物件的狀態,然後以某些方式保存的處理程序。Microsoft.NET Framework 包括功能強大可以序列化為 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. 針對在 Visual Studio Program.cs 或 Class1.cs Visual Studio.NET 2003年中,請切換至程式碼視窗。
  7. void 的 Main 方法中宣告並建立 clsPerson 類別的執行個體:
    clsPerson p = new clsPerson();
  8. 設定 clsPerson 物件的屬性:
    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
  9. Xml.Serialization 命名空間包含將物件至 XML 序列化的 XmlSerializer 類別。當您建立執行個體的 XmlSerializer 時,傳遞您想要將序列化為其建構函式的類別的型別:
    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
  10. 序列化 方法用來序列化為 XML 物件。序列化會進行多載,而且可以將輸出傳送至 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 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
關鍵字:?
kbmt kbsweptvs2008 kbnamespace kbxml kbhowtomaster KB815813 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本: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