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을 제어하려면 XML을 ReadXml WriteXml 읽고 쓰는 데 사용되는 클래스 및 XmlWriter 컨트롤 XmlReader 을 구현하는 메서드를 구현합니다. 이 예제는 방법: 직렬화된 데이터 청크를 참조하세요.

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

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

메서드

GetSchema()

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

ReadXml(XmlReader)

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

WriteXml(XmlWriter)

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

적용 대상

추가 정보