다음을 통해 공유


IXmlSerializable 인터페이스

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

네임스페이스: System.Xml.Serialization
어셈블리: System.Xml(system.xml.dll)

구문

‘선언
Public Interface IXmlSerializable
‘사용 방법
Dim instance As IXmlSerializable
public interface IXmlSerializable
public interface class IXmlSerializable
public interface IXmlSerializable
public interface IXmlSerializable

설명

이 인터페이스를 구현하는 이유는 두 가지입니다. 첫 번째는 XmlSerializer에서 개체를 serialize 또는 deserialize하는 방법을 제어하기 위해서입니다. 예를 들어, 대량의 데이터 집합을 버퍼링하는 대신 데이터를 바이트로 청크할 수 있으며 Base64 인코딩을 사용하여 데이터를 인코딩할 때 크기가 커지는 현상을 방지할 수 있습니다. serialization을 제어하려면 ReadXmlWriteXml 메서드를 구현하여 XML을 읽고 쓰는 데 사용되는 XmlReaderXmlWriter 클래스를 제어합니다. 이에 대한 예제를 보려면 방법: serialize된 데이터 청크를 참조하십시오.

두 번째 이유는 스키마를 제어할 수 있기 때문입니다. 스키마를 제어하려면 serialize할 수 있는 형식에 XmlSchemaProviderAttribute를 적용하고 스키마를 반환하는 정적 멤버의 이름을 지정해야 합니다. 예제를 보려면 XmlSchemaProviderAttribute를 참조하십시오.

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

예제

다음 예제 코드에서는 전용 필드를 serialize하는 IXmlSerializable 인터페이스의 구현 방법을 보여 줍니다.

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

}
#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);
   }
};
import System.*;
import System.Xml.*;
import System.Xml.Schema.*;
import System.Xml.Serialization.*;

public class Person implements IXmlSerializable
{
    // Private state
    private String personName;

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

    public Person()
    {
        personName = null;
    } //Person

    // Xml Serialization Infrastructure
    public void WriteXml(XmlWriter writer)
    {
        writer.WriteString(personName);
    } //WriteXml
    public void ReadXml(XmlReader reader)
    {
        personName = reader.ReadString();
    } //ReadXml

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

    // Print
    public String ToString()
    {
        return personName;
    } //ToString
} //Person 

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

IXmlSerializable 멤버
System.Xml.Serialization 네임스페이스

기타 리소스

XML Serialization 소개