다음을 통해 공유


IXmlSerializable.ReadXml 메서드

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

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

구문

‘선언
Sub ReadXml ( _
    reader As XmlReader _
)
‘사용 방법
Dim instance As IXmlSerializable
Dim reader As XmlReader

instance.ReadXml(reader)
void ReadXml (
    XmlReader reader
)
void ReadXml (
    XmlReader^ reader
)
void ReadXml (
    XmlReader reader
)
function ReadXml (
    reader : XmlReader
)

매개 변수

  • reader
    개체가 deserialize되는 XmlReader 스트림입니다.

설명

ReadXml 메서드에서는 WriteXml 메서드가 작성한 정보를 사용하여 개체를 다시 구성해야 합니다.

이 메서드가 호출될 때 판독기는 형식에 대한 정보를 래핑하는 요소의 시작 부분에 배치됩니다. 즉, serialize된 개체의 시작을 나타내는 시작 태그 바로 앞입니다. 이 메서드가 반환할 때 전체 요소를 처음부터 끝까지 즉, 요소의 모든 콘텐츠를 읽어야 합니다. WriteXml 메서드와 달리 프레임워크에서는 래퍼 요소가 자동으로 처리되지 않습니다. 따라서 래퍼 요소가 자동으로 처리되도록 구현해야 합니다. 이러한 배치 규칙을 지키지 않으면 코드에서 예기치 않은 런타임 예외가 발생하거나 데이터가 손상될 수 있습니다.

이 메서드를 구현할 때는 응용 프로그램을 작동하지 못하게 하거나 다르게 동작하도록 하기 위해 악의가 있는 사용자가 형식은 맞지만 올바르지 않은 XML을 제공할 수도 있다는 점을 고려해야 합니다.

예제

다음 예제에서는 ReadXml 메서드의 구현 방법을 보여 줍니다.

public void ReadXml (XmlReader reader)
{
    personName = reader.ReadString();
}
virtual void ReadXml( XmlReader^ reader )
{
   personName = reader->ReadString();
}
public void ReadXml(XmlReader reader)
{
    personName = reader.ReadString();
} //ReadXml

다음 예제에서는 XmlSerializer 클래스를 사용하여 이 개체를 deserialize하는 방법을 보여 줍니다.

using System;
using System.IO;
using System.Xml.Serialization;

public class Reader {

  public static void Main() {
    XmlSerializer serializer = new XmlSerializer(typeof(Person));
    FileStream file = new FileStream("test.xml", FileMode.Open);
    Person aPerson = (Person) serializer.Deserialize(file);
    Console.WriteLine(aPerson);
  }

}
#using <System.Xml.dll>
#using <System.dll>
#using <Person.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;

int main()
{
   XmlSerializer^ serializer = gcnew XmlSerializer( Person::typeid );
   FileStream^ file = gcnew FileStream( "test.xml",FileMode::Open );
   Person^ aPerson = dynamic_cast<Person^>(serializer->Deserialize( file ));
   Console::WriteLine( aPerson );
}
import System.*;
import System.IO.*;
import System.Xml.Serialization.*;
import System.Xml.Schema.* ;
import System.Xml.XmlWriter;
import System.Xml.XmlReader;

public class Reader
{
    public static void main(String[] args)
    {
        XmlSerializer serializer = new XmlSerializer(Person.class.ToType());
        FileStream file = new FileStream("test.xml", FileMode.Open);
        Person aPerson = (Person)(serializer.Deserialize(file));
        Console.WriteLine(aPerson);
    } //main
} //Reader 

플랫폼

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 인터페이스
IXmlSerializable 멤버
System.Xml.Serialization 네임스페이스