更新:November 2007
XmlReader 实例使用 Create 方法创建。 XmlReaderSettings 类用于指定要在 XmlReader 对象上启用的功能集。
| .gif) 重要说明: | 
|---|
| 尽管在 .NET Framework 2.0 版中,Microsoft .NET Framework 包括 XmlReader 类的具体实现,例如 XmlTextReader、XmlNodeReader 和 XmlValidatingReader 类,但是,我们建议您使用 Create 方法创建 XmlReader 实例。 | 
使用 XmlReaderSettings 类的属性启用或禁用功能。 然后,XmlReaderSettings 对象传递给 Create 方法。
通过使用 Create 方法和 XmlReaderSettings 类,您将得到下列好处:
- 可以指定要在所创建的 XmlReader 对象上支持的功能。 
- XmlReaderSettings 类可以重复使用,以创建多个读取器对象。 可以使用相同的设置创建多个具有相同功能的读取器。 另外,可以修改 XmlReaderSettings 对象并创建具有不同功能集的新读取器。 
- 可以将功能添加到现有读取器中。 Create 方法可以接受其他 XmlReader 对象。 基础 XmlReader 对象可以是用户定义的读取器或 XmlTextReader 对象,也可以是要添加附加功能的另一个 XmlReader 实例。 
- 充分利用 .NET Framework 2.0 版本的 XmlReader 类中增加的所有新功能。 某些功能只能在通过 Create 方法创建的 XmlReader 对象上使用,例如更好的一致性检查以及与 XML 1.0 建议的一致性。 
下表列出 XmlReaderSettings 类的默认属性设置。
| 属性 | 默认值 | 
|---|---|
| true | |
| ConformanceLevel.Document | |
| false | |
| false | |
| false | |
| 0. | |
| 0 | |
| null | |
| true | |
| 空的 XmlSchemaSet 对象 | |
| ValidationType.None | |
| 新的 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 类。
| .gif) 说明: | 
|---|
| 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