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。