XmlValidatingReader 的验证类型

ValidationType 属性确定 XmlValidatingReader 所执行的验证类型。 调用 Read 方法前必须设置此属性。 如果验证必须有外部文档类型定义 (DTD) 或者架构,则将使用 XmlResolver 属性。

注意注意

XmlValidatingReader 类在 .NET Framework 2.0 版 中已过期。您可以使用 XmlReaderSettings 类和 Create 方法创建一个验证 XmlReader 实例。有关更多信息,请参见使用 XmlReader 验证 XML 数据

ValidationType 枚举

ValidationType 属性可以设置为 ValidationType 枚举值之一。 以下各节介绍 ValidationType 的值。

ValidationType.Auto

这是 ValidationType 属性的默认值。 下表显示了当 ValidationType 属性设置为 Auto 时的验证规则。

DTD 或架构

ValidationType.Auto

无 DTD 或架构

对 XML 进行分析但不加以验证。 不引发异常。 不提供类型信息。

DTD

执行 DTD 验证。 扩展默认属性和实体。 仅在使用(扩展)常规实体时才加载和分析它们。 不提供类型信息。

XML 架构(引用或内联)

执行 XML 架构定义语言 (XSD) 验证。 通过架构验证。 扩展默认属性。 提供类型信息。

XDR 架构(引用或内联)

执行 XML 数据缩减 (XDR) 架构验证。 通过架构验证。 扩展默认属性。 提供类型信息。

DTD 和 XML 架构或 XDR 架构(引用或内联)

根据第一次出现的验证类型执行 DTD/XML 架构/XDR 验证。 DTD 验证始终比其他验证类型优先。

ValidationType.DTD

如果指定了 ValidationType.DTD 值,XmlValidatingReader 将根据 DTD 对文档进行验证。 下表显示了当 ValidationType 属性设置为 ValidationType.DTD 时的验证规则。

DTD 或架构

ValidationType.DTD

无 DTD 或架构

在根元素处返回 No DTD found 警告。 不引发异常。 不提供类型信息。

DTD

执行 DTD 验证。 扩展默认属性和实体。 仅在使用(扩展)常规实体时才加载和分析它们。 不提供类型信息。

XML 架构(引用或内联)

在根元素处返回 No DTD found 警告。 当找到架构时,将对混合验证类型引发 XmlException

XDR 架构(引用或内联)

在根元素处返回 No DTD found 警告。 当找到架构时,将对混合验证类型引发 XmlException

DTD 和 XML 架构或 XDR 架构(引用或内联)

执行 DTD 验证。 扩展默认属性和实体。

ValidationType.Schema

如果设置了 ValidationType.Schema 值,XmlValidatingReader 将根据 XML 架构(包括内联架构)对文档进行验证。 下表显示了当 ValidationType 属性设置为 ValidationType.Schema 时的验证规则。

DTD 或架构

ValidationType.Schema

无 DTD 或架构

对每个元素返回 No schema found 警告。

DTD

对混合验证类型引发 XmlException

XML 架构(引用或内联)

执行 XML 架构验证。 通过架构验证。 从架构扩展默认属性。 提供类型信息。

XDR 架构(引用或内联)

对混合验证类型引发 XmlException

DTD 和 XML 架构或 XDR 架构(引用或内联)

执行 XML 架构验证。 从架构扩展默认属性。 提供类型信息。 如果找到 DTD 或 XDR 架构,则对混合验证类型引发 XmlException

ValidationType.XDR

如果设置了 ValidationType.XDR 值,XmlValidatingReader 将根据 XDR 架构(包括内联架构)对文档进行验证。 下表显示了当 ValidationType 属性设置为 ValidationType.XDR 时的验证规则。

DTD 或架构

ValidationType.XDR

无 DTD 或架构

返回一个说明没有进行任何验证的最终警告。

DTD

对混合验证类型引发 XmlException

XML 架构(引用或内联)

对混合验证类型引发 XmlException

XDR 架构(引用或内联)

执行 XDR 验证。 通过架构验证。 从架构扩展默认属性。 提供类型信息。

DTD 和 XML 架构或 XDR 架构(引用或内联)

执行 XDR 验证。 从架构扩展默认属性。 提供类型信息。 如果找到 DTD 或 XML 架构,则对混合验证类型引发 XmlException

ValidationType.None

ValidationType.None 值创建一个非验证分析器,该分析器符合万维网联合会 (W3C) 可扩展标记语言 (XML) 1.0 建议。 将报告默认属性并且可以解析常规实体。 不引发验证错误。 下表显示了当 ValidationType 属性设置为 ValidationType.None 时的验证规则。

DTD 或架构

ValidationType.None

无 DTD 或架构

对 XML 进行分析但不加以验证。 不引发异常。 不提供类型信息。

DTD

将创建一个符合 XML 1.0 标准的非验证分析器。 不执行任何 DTD 验证。 从 DTD 扩展默认属性和实体。 不提供类型信息。

XML 架构(引用或内联)

对 XML 进行分析但不加以验证。 不引发异常。 不从架构扩展默认属性。 不提供类型信息。

XDR 架构(引用或内联)

对 XML 进行分析但不加以验证。 不引发异常。 不从架构扩展默认属性。 不提供类型信息。

DTD 和 XML 架构或 XDR 架构(引用或内联)

将创建一个符合 XML 1.0 标准的非验证分析器。 不执行任何 DTD 验证。 从 DTD 扩展默认属性和实体。 不提供类型信息。

如果在第一个 Read 方法之后设置了 ValidationType 属性,XmlValidatingReader 将引发 InvalidOperationException

请参见

概念

用 XmlReader 读取 XML

其他资源

使用 XmlReader 类