다음을 통해 공유


System.Xml.XmlReader.Create 메서드들

이 문서는 이 API에 대한 참조 설명서를 보충하는 추가 설명을 제공합니다.

대부분의 Create 오버로드에는 settings 개체를 허용하는 XmlReaderSettings 매개 변수가 포함됩니다. 이 개체를 사용하여 다음을 수행할 수 있습니다.

  • XmlReader 객체에서 지원하려는 기능을 지정하십시오.
  • 개체를 XmlReaderSettings 다시 사용하여 여러 판독기를 만듭니다. 동일한 설정을 사용하여 동일한 기능을 사용하여 여러 판독기를 만들 수 있습니다. 또는 인스턴스의 설정을 XmlReaderSettings 수정하고 다른 기능 집합을 사용하여 새 판독기를 만들 수 있습니다.
  • 기존 XML 판독기 기능을 추가합니다. 메서드는 Create 다른 XmlReader 개체를 허용할 수 있습니다. 기본 XmlReader 개체는 사용자 정의 판독기, XmlTextReader 개체 또는 추가 기능을 추가하려는 다른 XmlReader 인스턴스일 수 있습니다.
  • 정적 메서드로 생성된 XmlReader 개체에서만 사용할 수 있는, 더 나은 규칙 검사 및 Create 권장 사항 준수와 같은 기능을 최대한 활용합니다.

비고

.NET에는 XmlReader 클래스의 구체적인 구현으로 XmlTextReader, XmlNodeReader, 및 XmlValidatingReader 클래스가 포함되어 있지만, XmlReader 메소드를 사용하여 Create 인스턴스를 만드는 것을 권장합니다.

기본 설정

Create 개체를 허용하지 않는 XmlReaderSettings 오버로드를 사용하는 경우, 다음 기본 판독기 설정이 사용됩니다.

설정 기본값
CheckCharacters true
ConformanceLevel ConformanceLevel.Document
IgnoreComments false
IgnoreProcessingInstructions false
IgnoreWhitespace false
LineNumberOffset 0
LinePositionOffset 0
NameTable null
DtdProcessing Prohibit
Schemas XmlSchemaSet 개체
ValidationFlags ProcessIdentityConstraints 사용 가능
ValidationType None
XmlResolver null

일반적인 시나리오에 대한 설정

다음은 XmlReaderSettings 일반적인 XML 판독기 시나리오 중 일부에 대해 설정해야 하는 속성입니다.

요구 사항 설정
데이터는 올바른 형식의 XML 문서여야 합니다. ConformanceLevelDocument로 변경되었습니다.
데이터는 올바른 형식의 XML 구문 분석 엔터티여야 합니다. ConformanceLevelFragment로 변경되었습니다.
DTD에 대해 데이터의 유효성을 검사해야 합니다. DtdProcessing Parse
ValidationTypeDTD로 변경되었습니다.
XML 스키마에 대해 데이터의 유효성을 검사해야 합니다. ValidationType Schema
SchemasXmlSchemaSet로 설정하여 유효성 검사를 수행할 항목입니다. XmlReader는 XDR(XML-Data 감소) 스키마 유효성 검사를 지원하지 않습니다.
인라인 XML 스키마에 대해 데이터의 유효성을 검사해야 합니다. ValidationType Schema
ValidationFlagsProcessInlineSchema로 변경되었습니다.
형식 지원. ValidationType Schema
Schemas에서 XmlSchemaSet로 사용합니다.

XmlReader 는 XDR(XML-Data 축소) 스키마 유효성 검사를 지원하지 않습니다.

비동기 프로그래밍

동기 모드에서 메서드는 Create 파일, 스트림 또는 텍스트 판독기의 버퍼에서 데이터의 첫 번째 청크를 읽습니다. I/O 작업이 실패하면 예외가 발생할 수 있습니다. 비동기 모드에서 첫 번째 I/O 작업은 읽기 작업으로 수행되며, 이 과정에서 발생한 예외가 던져집니다.

보안 고려 사항

기본적으로 XmlReader 사용자 자격 증명이 없는 개체를 사용하여 XmlUrlResolver 리소스를 엽니다. 즉, 기본적으로 XML 판독기는 자격 증명이 필요하지 않은 모든 위치에 액세스할 수 있습니다. 이 XmlResolver 속성을 사용하여 리소스에 대한 액세스를 제어합니다.

  • XmlResolver을/를 XmlSecureResolver 개체로 설정하여 XML 판독기가 액세스할 수 있는 리소스를 제한하거나...
  • XmlResolver을/null으로 설정하여 XML 판독기가 외부 리소스를 열지 않도록 합니다.

예시

이 예제에서는 사소한 공백을 제거하고, 주석을 제거하고, 조각 수준 규칙 검사를 수행하는 XML 판독기를 만듭니다.

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

다음 예제에서는 기본 자격 증명을 XmlUrlResolver 사용하여 파일에 액세스합니다.

// Set the reader settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreWhitespace = true;
' Set the reader settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.IgnoreComments = true
settings.IgnoreProcessingInstructions = true
settings.IgnoreWhitespace = true
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings);
' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver

' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("http://ServerName/data/books.xml", 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 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)

다음은 판독기를 연결하여 DTD 및 XML 스키마 유효성 검사를 추가하는 예제입니다.

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
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