다음을 통해 공유


IXmlSerializable 인터페이스

정의

XML serialization 및 deserialization을 위한 사용자 지정 서식을 제공합니다.

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 인코딩을 사용하여 데이터를 인코딩할 때 발생하는 인플레이션을 방지할 수도 있습니다. serialization을 제어하려면 및 WriteXml 메서드를 ReadXml 구현하여 XML을 XmlReader 읽고 쓰는 데 사용되는 및 XmlWriter 클래스를 제어합니다. 이에 대한 예제는 방법: 직렬화된 데이터 청크를 참조하세요.

두 번째 이유는 스키마를 제어할 수 있기 때문입니다. 이를 사용하도록 설정하려면 를 직렬화 가능한 형식에 적용 XmlSchemaProviderAttribute 하고 스키마를 반환하는 정적 멤버의 이름을 지정해야 합니다. 예제는 를 XmlSchemaProviderAttribute 참조하세요.

인터페이스를 구현하는 클래스에는 매개 변수가 없는 생성자가 있어야 합니다. 이는 클래스의 요구 사항입니다 XmlSerializer .

메서드

GetSchema()

이 메서드는 예약되어 있으므로 사용해서는 안 됩니다. IXmlSerializable 인터페이스를 구현할 때 이 메서드에서 null (Visual Basic의 경우Nothing )을 반환해야 합니다. 대신 사용자 지정 스키마를 지정할 필요가 있는 경우 클래스에 XmlSchemaProviderAttribute 를 적용합니다.

ReadXml(XmlReader)

해당 XML 표현에서 개체를 생성합니다.

WriteXml(XmlWriter)

개체를 해당 XML 표현으로 변환합니다.

적용 대상

추가 정보