IXmlSerializable IXmlSerializable IXmlSerializable IXmlSerializable Interface

定義

XML シリアル化および逆シリアル化のカスタム書式を提供します。Provides custom formatting for XML serialization and deserialization.

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

次のコード例の実装を示しています、IXmlSerializableプライベート フィールドをシリアル化するインターフェイス。The following example code shows an implementation of the IXmlSerializable interface that serializes a private field.

#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);
    }

}

注釈

このインターフェイスを実装する 2 つの理由があります。There are two reasons to implement this interface. 1 つが、オブジェクトをシリアル化またはで逆シリアル化する方法を制御するには、XmlSerializerします。The first is to control how your object is serialized or deserialized by the XmlSerializer. たとえば、大量のデータをバッファリングではなくバイトにデータをチャンクし、データは Base64 エンコードを使用してエンコードされたときに発生する増加を回避することもできます。For example, you can chunk data into bytes instead of buffering large data sets, and also avoid the inflation that occurs when the data is encoded using Base64 encoding. シリアル化を制御するには、実装、ReadXmlWriteXmlコントロールするメソッド、XmlReaderXmlWriterクラスは、XML を読み書きするために使用します。To control the serialization, implement the ReadXml and WriteXml methods to control the XmlReader and XmlWriter classes used to read and write the XML. これの例は、次を参照してください。方法。シリアル化されたデータをチャンクします。For an example of this, see How to: Chunk Serialized Data.

2 つ目の理由、スキーマを制御できるためです。The second reason is to be able to control the schema. これを有効にすることを適用する必要があります、XmlSchemaProviderAttributeをシリアル化可能な型、およびスキーマを返す静的メンバーの名前を指定します。To enable this, you must apply the XmlSchemaProviderAttribute to the serializable type, and specify the name of the static member that returns the schema. 例については、「XmlSchemaProviderAttribute」をご覧ください。See the XmlSchemaProviderAttribute for an example.

インターフェイスを実装するクラスには、パラメーターなしのコンス トラクターが必要です。A class that implements the interface must have a parameterless constructor. これは、要件、XmlSerializerクラス。This is a requirement of the XmlSerializer class.

メソッド

GetSchema() GetSchema() GetSchema() GetSchema()

このメソッドは予約されているため、使用できません。This method is reserved and should not be used. IXmlSerializable インターフェイスを実装する場合、このメソッドから null (Visual Basic では Nothing) を返す必要があります。また、カスタム スキーマの指定が要求されている場合は、このクラスに XmlSchemaProviderAttribute を適用します。When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the XmlSchemaProviderAttribute to the class.

ReadXml(XmlReader) ReadXml(XmlReader) ReadXml(XmlReader) ReadXml(XmlReader)

オブジェクトの XML 表現からオブジェクトを生成します。Generates an object from its XML representation.

WriteXml(XmlWriter) WriteXml(XmlWriter) WriteXml(XmlWriter) WriteXml(XmlWriter)

オブジェクトを XML 表現に変換します。Converts an object into its XML representation.

適用対象

こちらもご覧ください