다음을 통해 공유


XmlReader를 사용하여 데이터 규칙 검사

업데이트: November 2007

Create 메서드에서 만든 XmlReader 개체는 기본적으로 XmlTextReader 구현보다 일치합니다. Create 메서드에서 만든 XmlReader 개체는 기본적으로 다음 기능을 지원합니다.

  • 줄 바꿈 문자 표준화

  • 엔터티 확장

  • 기본 특성 추가

XmlReaderSettings.CheckCharactersXmlReaderSettings.ConformanceLevel 속성을 사용하면 만들어진 XmlReader 개체에서 사용할 규칙 검사의 유형을 지정할 수 있습니다.

CheckCharacters 설정

XmlReaderSettings 클래스의 CheckCharacters 속성은 판독기에서 문자를 검사하고 문자가 유효한 XML 문자 범위 밖에 있을 경우 XmlException을 throw하도록 지시합니다. 문자 검사 기능을 사용하면 다음 사항을 확인할 수 있습니다.

기본적으로 문자 검사가 사용됩니다. 판독기에서 텍스트 데이터를 처리하는 경우 CheckCharacters 속성을 false로 설정한 경우에도 판독기는 XML 이름이 유효한지 항상 확인합니다.

ConformanceLevel 설정

XmlReaderSettings 클래스의 ConformanceLevel 속성은 읽는 중인 스트림이 특정 규칙 집합을 준수하는지 확인하고 이 규칙 집합을 준수하도록 XmlReader를 구성합니다. 지정되는 규칙 수준에 따라 XML 데이터가 제대로 구성된 XML 1.0 문서 또는 문서 조각에 대한 규칙을 따르는지 여부를 검사할 수 있습니다. 데이터가 규칙을 따르지 않는 경우에는 XmlException이 throw됩니다. 기본 설정은 ConformanceLevel.Document입니다.

참고:

ConformanceLevel.Fragment를 지원하도록 판독기를 구성했지만 XML 데이터가 DTD(문서 종류 정의)를 포함하는 경우 XmlException이 throw됩니다. DTD가 있을 경우 XML 1.0 권장 사항에서는 문서 수준 규칙을 요구합니다.

ConformanceLevel 값

설명

Document

XML 데이터가 제대로 구성된 XML 1.0 문서에 대한 규칙을 따릅니다. 이 검사 수준은 프로세서에서 XML 1.0 document로 읽히는 스트림을 사용할 수 있도록 합니다.

판독기는 다음을 검사합니다.

  • 최상위 항목에는 XML 선언, DTD(문서 종류 정의), 요소, 주석, 공백 또는 처리 명령 이외의 다른 노드가 포함될 수 없습니다.

  • XML 데이터에는 최상위 요소 노드가 한 개만 있어야 합니다.

Fragment

XML 데이터가 제대로 구성된 XML 1.0 문서 조각에 대한 규칙을 따릅니다.

이 설정은 여러 개의 루트 요소가 있는 XML 데이터나 최상위의 텍스트 노드를 허용합니다. 이 검사 수준은 프로세서에서 XML 1.0 external parsed entity로 읽히는 스트림을 사용할 수 있도록 합니다.

참고:

조각에서는 DTD를 사용할 수 없습니다.

Auto

판독기는 들어오는 데이터를 기준으로 적용할 규칙 검사 수준을 결정합니다.

XML 데이터가 DTD 정보를 포함하는 경우 문서 규칙 검사가 적용됩니다.

XML 데이터가 다음 중 하나를 포함하는 경우 조각 규칙 검사가 적용됩니다.

  • 루트 수준에 텍스트, CDATA 또는 엔터티 참조 노드가 있는 경우

  • 루트 수준에 둘 이상의 요소가 있는 경우

  • 루트 수준에 요소가 없는 경우

루트 수준에 텍스트 노드 및 DTD가 있는 경우와 같이 충돌이 있을 경우 XmlException이 throw됩니다.

Create 메서드를 사용하여 기존 XmlReader에 기능을 추가할 때 래핑 시나리오에서 이 설정을 사용할 수 있습니다. 이러한 경우 ConformanceLevel.Auto는 새 규칙 검사를 추가하지 않습니다. 규칙 검사는 래핑 중인 XmlReader에 남아 있습니다.

XmlTextReader, XmlValidatingReader 및 XmlNodeReader 개체

XmlTextReader, XmlValidatingReader 또는 XmlNodeReader 개체로 작업하는 경우 ConformanceLevel 설정은 다음 동작을 수행합니다.

예제

다음 코드는 조각 수준 규칙을 적용하는 판독기를 만듭니다.

Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader as XmlReader = XmlReader.Create(new StringReader(xmlString), settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlString), settings);

참고 항목

개념

XmlReader로 XML 읽기

기타 리소스

XmlReader를 사용하여 XML 데이터의 유효성 검사