다음을 통해 공유


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

설명

이러한 이벤트는 XML 인스턴스 문서를 ValidationType 읽는 DTD 동안 발생합니다 Schema. 속성에서 ReportValidationWarnings 설정을 사용하도록 설정한 ValidationFlags 경우 유효성 검사 경고가 발생할 때 이러한 이벤트도 발생합니다.

판독기가 유효성 검사를 위해 구성되어 있고 유효성 검사 이벤트 처리기가 설정 XmlSchemaValidationException 되지 않은 경우 모든 유효성 검사 오류에 대해 throw됩니다. 유효성 검사 경고로 인해 XmlSchemaValidationException throw되지 않습니다.

중요

유효성 검사 오류 메시지는 중요한 콘텐츠 모델 정보를 노출할 수 있습니다. 유효성 검사 오류 및 경고 메시지는 대리자를 ValidationEventHandler 사용하여 처리되거나 개체에 이벤트 처리기가 제공되지 XmlReaderSettings 않은 경우 노출 XmlSchemaValidationException 됩니다(유효성 검사 경고로 인해 XmlSchemaValidationException throw되지 않음). 이 콘텐츠 모델 정보는 신뢰할 수 없는 시나리오에서 노출되어서는 안 됩니다. 유효성 검사 경고 메시지는 기본적으로 표시되지 않으며 플래그를 ReportValidationWarnings 설정하여 보고할 수 있습니다.

SourceUri 예외를 발생시킨 XmlSchemaValidationException 스키마 파일에 대한 URI 경로를 반환하는 속성입니다. SourceUri 신뢰할 수 없는 시나리오에서는 이 속성을 노출해서는 안 됩니다.

적용 대상

추가 정보