XmlReaderSettings.ValidationEventHandler 事件

定义

在读取器遇到验证错误时发生。

public:
 event System::Xml::Schema::ValidationEventHandler ^ ValidationEventHandler;
public event System.Xml.Schema.ValidationEventHandler ValidationEventHandler;
member this.ValidationEventHandler : System.Xml.Schema.ValidationEventHandler 

事件类型

示例

以下示例演示要指定的设置,以创建使用内联架构进行验证且还显示验证警告的读取器。 验证事件处理程序使用 XmlSeverityType 枚举来区分警告和错误。

using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;

public class ValidXSD {

  public static void Main() {

    // Set the validation settings.
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ValidationType = ValidationType.Schema;
    settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
    settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
    settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);

    // Create the XmlReader object.
    XmlReader reader = XmlReader.Create("inlineSchema.xml", settings);

    // Parse the file.
    while (reader.Read());
  }

  // Display any warnings or errors.
  private static void ValidationCallBack (object sender, ValidationEventArgs args) {
     if (args.Severity==XmlSeverityType.Warning)
       Console.WriteLine("\tWarning: Matching schema not found.  No validation occurred." + args.Message);
     else
        Console.WriteLine("\tValidation error: " + args.Message);
  }
}
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO

public class ValidXSD 

  public shared sub Main() 

    ' Set the validation settings.
    Dim settings as XmlReaderSettings = new XmlReaderSettings()
    settings.ValidationType = ValidationType.Schema
    settings.ValidationFlags = settings.ValidationFlags Or XmlSchemaValidationFlags.ProcessInlineSchema
    settings.ValidationFlags = settings.ValidationFlags Or XmlSchemaValidationFlags.ReportValidationWarnings
      AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack

    ' Create the XmlReader object.
    Dim reader as XmlReader = XmlReader.Create("inlineSchema.xml", settings)

    ' Parse the file. 
    while (reader.Read())
    end while
  end sub

  ' Display any warnings or errors.
  private shared sub ValidationCallBack (sender as object, args as ValidationEventArgs)
     if (args.Severity=XmlSeverityType.Warning)
       Console.WriteLine("   Warning: Matching schema not found.  No validation occurred." + args.Message)
     else
        Console.WriteLine("   Validation error: " + args.Message)
     end if
  end sub 

end class

注解

如果 设置为 DTDSchemaValidationType则在读取 XML 实例文档时发生这些事件。 ReportValidationWarnings如果已在 属性上启用设置,ValidationFlags则遇到任何验证警告时,也会发生这些事件。

如果为验证配置了读取器,并且尚未设置验证事件处理程序, XmlSchemaValidationException 则会针对所有验证错误引发 。 (验证警告不会导致 XmlSchemaValidationException 引发) 。

重要

验证错误消息可能会公开敏感内容模型信息。 验证错误和警告消息使用ValidationEventHandler委托进行处理,如果未向XmlReaderSettings对象提供事件处理程序,则将其作为 XmlSchemaValidationException 公开, (验证警告不会导致XmlSchemaValidationException引发) 。 不应在不受信任的方案中公开此内容模型信息。 验证警告消息默认被禁止显示,可以通过设置 ReportValidationWarnings 标志来报告。

SourceUriXmlSchemaValidationException 属性返回导致异常的架构文件的 URI 路径。 SourceUri不应在不受信任的方案中公开 属性。

适用于

另请参阅