共用方式為


XmlReaderSettings.ValidationEventHandler 事件

定義

發生於讀取器遇到驗證錯誤時。

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

事件類型

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 實例檔時會發生這些事件。 如果已在 屬性上 ValidationFlags 啟用設定, ReportValidationWarnings 這些事件也會在遇到任何驗證警告時發生。

如果讀取器已設定驗證,而且尚未設定任何驗證事件處理常式, XmlSchemaValidationException 則會針對所有驗證錯誤擲回 。 (驗證警告不會造成 XmlSchemaValidationException 擲回) 。

重要

驗證錯誤訊息可能會公開敏感性內容模型資訊。 驗證錯誤和警告訊息是使用 ValidationEventHandler 委派來處理,或者 XmlSchemaValidationException 如果未將事件處理常式提供給 XmlReaderSettings 物件, (驗證警告不會造成 XmlSchemaValidationException 擲回) 。 此內容模型資訊不應在不受信任的案例中公開。 預設會隱藏驗證警告訊息,而且可以藉由設定 ReportValidationWarnings 旗標來報告。

SourceUriXmlSchemaValidationException 屬性會傳回造成例外狀況之架構檔案的 URI 路徑。 屬性 SourceUri 不應該在不受信任的案例中公開。

適用於

另請參閱