이 문서는 이 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 문서여야 합니다. | ConformanceLevel가 Document로 변경되었습니다. |
| 데이터는 올바른 형식의 XML 구문 분석 엔터티여야 합니다. | ConformanceLevel가 Fragment로 변경되었습니다. |
| DTD에 대해 데이터의 유효성을 검사해야 합니다. |
DtdProcessing
Parse
ValidationType가 DTD로 변경되었습니다. |
| XML 스키마에 대해 데이터의 유효성을 검사해야 합니다. |
ValidationType
Schema
Schemas를 XmlSchemaSet로 설정하여 유효성 검사를 수행할 항목입니다. XmlReader는 XDR(XML-Data 감소) 스키마 유효성 검사를 지원하지 않습니다. |
| 인라인 XML 스키마에 대해 데이터의 유효성을 검사해야 합니다. |
ValidationType
Schema
ValidationFlags가 ProcessInlineSchema로 변경되었습니다. |
| 형식 지원. |
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
.NET