IXmlSerializable 인터페이스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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() |
이 메서드는 예약되어 있으므로 사용해서는 안 됩니다. |
ReadXml(XmlReader) |
해당 XML 표현에서 개체를 생성합니다. |
WriteXml(XmlWriter) |
개체를 해당 XML 표현으로 변환합니다. |