创建 XML 读取器
更新:November 2007
XmlReader 实例使用 Create 方法创建。 XmlReaderSettings 类用于指定要在 XmlReader 对象上启用的功能集。
重要说明: |
---|
尽管在 .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 类。
说明: |
---|
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