IXmlSerializable 인터페이스

정의

XML Serialization 및 Deserialization에 대한 사용자 지정 서식을 제공합니다.Provides custom formatting for XML serialization and deserialization.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
파생

예제

다음 예제 코드에서는 전용 필드를 serialize 하는 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);
    }

}

설명

이 인터페이스를 구현 하는 방법은 두 가지가 있습니다.There are two reasons to implement this interface. 첫 번째는 XmlSerializer에서 개체를 serialize 하거나 deserialize 하는 방법을 제어 하는 것입니다.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. Serialization을 제어 하려면 ReadXmlWriteXml 메서드를 구현 하 여 XML을 읽고 쓰는 데 사용 되는 XmlReaderXmlWriter 클래스를 제어 합니다.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.

두 번째 이유는 스키마를 제어할 수입니다.The second reason is to be able to control the schema. 이를 사용 하려면 serializable 형식에 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()

이 메서드는 예약되어 있으므로 사용하면 안 됩니다.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)

개체의 XML 표현에서 개체를 생성합니다.Generates an object from its XML representation.

WriteXml(XmlWriter)

개체를 해당 XML 표현으로 변환합니다.Converts an object into its XML representation.

적용 대상

추가 정보