다음을 통해 공유


XML 판독기 만들기

업데이트: November 2007

XmlReader 개체는 Create 메서드를 사용하여 만듭니다. XmlReaderSettings 클래스를 사용하여 XmlReader 개체에서 사용할 기능 집합을 지정할 수 있습니다.

중요:

Microsoft .NET Framework에는 XmlTextReader, XmlNodeReader, XmlValidatingReader 클래스 등 XmlReader 클래스의 구체적 구현이 포함되어 있지만 .NET Framework 버전 2.0에서는 Create 메서드를 사용하여 XmlReader 인스턴스를 만드는 것이 좋습니다.

XmlReaderSettings 클래스의 속성을 사용하여 기능을 활성화하거나 비활성화할 수 있습니다. 그런 다음 XmlReaderSettings 개체를 Create 메서드에 전달합니다.

Create 메서드와 XmlReaderSettings 클래스를 사용하면 다음과 같은 이점을 얻을 수 있습니다.

  • 만들어진 XmlReader 개체에서 지원할 기능을 지정할 수 있습니다.

  • XmlReaderSettings 클래스를 다시 사용하여 여러 판독기 개체를 만들 수 있습니다. 같은 설정을 사용하면 같은 기능을 갖춘 여러 판독기를 만들 수 있습니다. 또는 XmlReaderSettings 개체를 수정하고 다른 기능 집합이 포함된 새 판독기를 만들 수 있습니다.

  • 기존 판독기에 기능을 추가할 수 있습니다. Create 메서드는 다른 XmlReader 개체를 허용할 수 있습니다. 기본 XmlReader 개체는 사용자 정의 판독기 또는 XmlTextReader 개체이거나 기능을 추가할 또 다른 XmlReader 인스턴스일 수 있습니다.

  • .NET Framework 2.0 릴리스에서 XmlReader 클래스에 추가된 새로운 기능을 모두 최대한 활용하십시오. 향상된 규칙 검사 기능이나 XML 1.0 권장 사항 준수 등의 일부 기능은 Create 메서드로 만든 XmlReader 개체에서만 사용할 수 있습니다.

다음 표에서는 XmlReaderSettings 클래스의 기본 속성 설정을 보여 줍니다.

속성

기본값

CheckCharacters

true

ConformanceLevel

ConformanceLevel.Document

IgnoreComments

false

IgnoreProcessingInstructions

false

IgnoreWhitespace

false

LineNumberOffset

0.

LinePositionOffset

0

NameTable

null

ProhibitDtd

true

Schemas

XmlSchemaSet 개체

ValidationFlags

ProcessIdentityConstraints 사용

ValidationType

ValidationType.None

XmlResolver

XmlUrlResolver 개체

XmlReader 시나리오

다음 표에서는 일반적인 시나리오 및 XmlReaderSettings 클래스에 적용해야 할 설정에 대해 설명합니다.

시나리오

XmlReaderSettings

데이터가 제대로 구성된 XML 문서여야 할 경우

ConformanceLevel = ConformanceLevel.Document

데이터가 제대로 구성된 XML의 구문 분석된 엔터티여야 할 경우

ConformanceLevel = ConformanceLevel.Fragment

DTD에 대해 데이터의 유효성을 검사해야 할 경우

ProhibitDtd = false

ValidationType = ValidationType.DTD

XML 스키마에 대해 데이터의 유효성을 검사해야 할 경우

ValidationType = ValidationType.Schema

Schemas = 유효성 검사에 사용할 XmlSchemaSet

인라인 XML 스키마에 대해 데이터의 유효성을 검사해야 할 경우

ValidationType = ValidationType.Schema

ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema

형식 지원이 필요할 경우

ValidationType = ValidationType.Schema

Schemas = 사용할 XmlSchemaSet

Create 메서드로 생성되지 않는 XmlReader 구현을 사용해야 하는 특별한 시나리오가 몇 가지 있습니다.

  • XDR 스키마에 대해 유효성을 검사해야 할 경우 XmlValidatingReader 클래스를 사용합니다.
참고:

XmlValidatingReader 클래스는 .NET Framework 2.0 릴리스에서 사용되지 않습니다. XML 스키마로 마이그레이션하고 Create 메서드에서 반환한 XmlReader 개체를 사용하여 유효성을 검사하는 것이 좋습니다.

  • XmlNode 개체에서 XML 데이터를 읽으려면 XmlNodeReader 클래스를 사용합니다.

  • 요청 시 엔터티를 확장해야 할 경우(Create 메서드로 생성된 판독기가 모든 엔터티 확장) 또는 텍스트 내용을 표준화하지 않으려는 경우 XmlTextReader 클래스를 사용합니다.

  • 기본 특성을 반환하지 않으려면 XmlTextReader 클래스를 사용합니다.

XmlReader 개체를 인스턴스화하려면

Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);

다른 판독기 내에서 판독기 인스턴스를 래핑하려면

Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)
XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);

판독기를 연결하여 설정을 추가하려면

Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings)  ' XML Schema Validation
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings);  // XML Schema Validation

참고 항목

개념

XmlReader로 XML 읽기