IXmlSerializable 介面

定義

為 XML 序列化和還原序列化提供自訂格式。

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
衍生

範例

下列範例程式碼示範序列化私用欄位之 IXmlSerializable 介面的實作。

#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::Xml::Serialization;
public ref class Person: public IXmlSerializable
{
private:

   // Private state
   String^ personName;

public:

   // Constructors
   Person( String^ name )
   {
      personName = name;
   }

   Person()
   {
      personName = nullptr;
   }

   // Xml Serialization Infrastructure
   virtual void WriteXml( XmlWriter^ writer )
   {
      writer->WriteString( personName );
   }

   virtual void ReadXml( XmlReader^ reader )
   {
      personName = reader->ReadString();
   }

   virtual XmlSchema^ GetSchema()
   {
      return nullptr;
   }

   // Print
   virtual String^ ToString() override
   {
      return (personName);
   }
};
using System;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;

public class Person : IXmlSerializable
{

    // Private state

    private string personName;

    // Constructors

    public Person (string name)
    {
        personName = name;
    }

    public Person ()
    {
        personName = null;
    }

    // Xml Serialization Infrastructure

    public void WriteXml (XmlWriter writer)
    {
        writer.WriteString(personName);
    }

    public void ReadXml (XmlReader reader)
    {
        personName = reader.ReadString();
    }

    public XmlSchema GetSchema()
    {
        return(null);
    }

    // Print

    public override string ToString()
    {
        return(personName);
    }
}

備註

實作此介面有兩個原因。 第一個是控制物件的序列化或還原序列化 XmlSerializer 方式。 例如,您可以將資料區塊化成位元組,而不是緩衝大型資料集,也避免使用 Base64 編碼來編碼資料時所發生的擴大。 若要控制序列化,請實 ReadXml 作 和 WriteXml 方法來控制 XmlReader 用來讀取和寫入 XML 的 和 XmlWriter 類別。 如需此範例,請參閱 如何:區塊序列化資料

第二個原因是能夠控制架構。 若要啟用這項功能,您必須將 套用 XmlSchemaProviderAttribute 至可序列化的型別,並指定傳回架構的靜態成員名稱。 如需範例,請參閱 XmlSchemaProviderAttribute

實作 介面的類別必須具有無參數建構函式。 這是 類別的需求 XmlSerializer

方法

GetSchema()

這個方法已保留且不應使用。 實作 IXmlSerializable 介面時,您應該要從這個方法傳回 null (在 Visual Basic 中為 Nothing);相對地,在需要指定自訂結構描述時,將 XmlSchemaProviderAttribute 套用至該類別。

ReadXml(XmlReader)

從物件的 XML 表示產生該物件。

WriteXml(XmlWriter)

將物件轉換為其 XML 表示。

適用於

另請參閱