다음을 통해 공유


System.Xml.XmlReader.Create 메서드

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

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

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

참고 항목

.NET에는 클래스와 같은 XmlTextReaderXmlNodeReader클래스의 XmlReader 구체적인 구현이 XmlValidatingReader 포함되어 있지만 메서드를 사용하여 Create 인스턴스를 만드는 XmlReader 것이 좋습니다.

기본 설정

개체를 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 판독기 시나리오 중 일부에 대해 설정해야 하는 속성입니다.

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

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

비동기 프로그래밍

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

보안 고려 사항

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

  • XML 판독기에서 XmlSecureResolver 액세스할 수 있는 리소스를 제한하려면 개체로 설정 XmlResolver 하거나...
  • XML 판독기 null 에서 외부 리소스를 열지 않도록 설정 XmlResolver 됩니다.

예제

이 예제에서는 사소한 공백을 제거하고, 주석을 제거하고, 조각 수준 규칙 검사 수행하는 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