次の方法で共有


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

注釈

が または SchemaDTD設定されている場合、XML インスタンス ドキュメントのValidationType読み取り中にこれらのイベントが発生します。 プロパティで ReportValidationWarnings 設定が有効 ValidationFlags になっている場合、検証の警告が発生したときにもこれらのイベントが発生します。

リーダーが検証用に構成されていて、検証イベント ハンドラーが設定されていない場合は、 XmlSchemaValidationException すべての検証エラーに対して がスローされます。 (検証の警告では、 は XmlSchemaValidationException スローされません)。

重要

検証エラー メッセージでは、機密性の高いコンテンツ モデル情報が公開される場合があります。 検証エラーメッセージと警告メッセージはデリゲートをValidationEventHandler使用して処理されるか、オブジェクトにイベント ハンドラーが指定XmlReaderSettingsされていない場合は としてXmlSchemaValidationException公開されます (検証警告では がXmlSchemaValidationExceptionスローされません)。 このコンテンツ モデル情報は、信頼されていないシナリオでは公開しないでください。 検証の警告メッセージは既定では抑制され、 フラグを ReportValidationWarnings 設定することで報告できます。

XmlSchemaValidationException プロパティはSourceUri、例外の原因となったスキーマ ファイルへの URI パスを返します。 SourceUri信頼されていないシナリオでは、 プロパティを公開しないでください。

適用対象

こちらもご覧ください