Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

XmlValidatingReader.ValidationEventHandler-Ereignis

Legt einen Ereignishandler für den Empfang von Informationen über Validierungsfehler von DTDs (Dokumenttypdefinition), XDR (XML-Data Reduced)-Schemas und XSD (XML Schema Definition Language)-Schemas fest.

Namespace: System.Xml
Assembly: System.Xml (in system.xml.dll)

public event ValidationEventHandler ValidationEventHandler
/** @event */
public void add_ValidationEventHandler (ValidationEventHandler value)

/** @event */
public void remove_ValidationEventHandler (ValidationEventHandler value)

JScript unterstützt die Verwendung von Ereignissen, aber nicht die Deklaration von neuen Ereignissen.

HinweisHinweis

Die XmlValidatingReader-Klasse ist in Microsoft .NET Framework, Version 2.0 veraltet. Sie können eine Instanz eines validierenden XmlReader mithilfe der XmlReaderSettings-Klasse und der Create-Methode erstellen. Weitere Informationen finden Sie unter Validieren von XML-Daten mit "XmlReader".

Diese Ereignisse treten während Read ein, jedoch nur, wenn als ValidationType DTD, XDR, Schema oder Auto angegeben ist.

Wenn kein Ereignishandler bereitgestellt wurde, wird beim ersten Validierungsfehler eine XmlException ausgelöst (Schweregrad ist gleich XmlSeverityType.Error).

HinweisHinweis

Wenn ein Element einen Validierungsfehler meldet, wird das Inhaltsmodell für dieses Element nicht weiter überprüft. Die untergeordneten Elemente werden jedoch überprüft. Der Reader meldet für ein angegebenes Element nur den ersten Fehler.

Der Rückrufhandler kann mithilfe der ValidationEventArgs.Severity-Eigenschaft sicherstellen, dass ein Dokument einer XML-Instanz anhand des Schemas validiert wird. Die Severity-Eigenschaft ermöglicht die Unterscheidung zwischen Validierungsfehlern (Schweregrad ist gleich XmlSeverityType.Error), die einen schwerwiegenden Fehler angeben, und Überprüfungswarnungen (Schweregrad ist gleich XmlSeverityType.Warning), die angeben, dass keine Schemainformationen verfügbar sind.

Im folgenden Beispiel wird eine Datei anhand eines XSD (XML Schema Definition)-Schemas validiert.

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

public class Sample
{

  private XmlTextReader txtreader = null;
  private XmlValidatingReader reader = null;
  private Boolean m_success = true;

  public Sample ()
  {
        //Validate file against the XSD schema. 
        //The validation should fail.
        Validate("notValidXSD.xml"); 
  }    

  public static void Main ()
  {
      Sample validation = new Sample();
  }

  private void Validate(String filename)
  {    
     try
     {
        Console.WriteLine("Validating XML file " + filename.ToString());
        txtreader = new XmlTextReader (filename);
        reader = new XmlValidatingReader (txtreader);

        // Set the validation event handler
        reader.ValidationEventHandler += new ValidationEventHandler (this.ValidationEventHandle);

        // Read XML data
        while (reader.Read()){}
        Console.WriteLine ("Validation finished. Validation {0}", (m_success==true ? "successful" : "failed"));
     }

     finally
     {
        //Close the reader.
        if (reader != null)
          reader.Close();
     } 
  }

  //Display the validation error.
  private void ValidationEventHandle (object sender, ValidationEventArgs args)
  {
     m_success = false;
     Console.WriteLine("\r\n\tValidation error: " + args.Message );
  }
}

import System.*;
import System.IO.*;
import System.Xml.*;
import System.Xml.Schema.*;

public class Sample
{
    private XmlTextReader txtReader = null;
    private XmlValidatingReader reader = null;
    private boolean mSuccess = true;

    public Sample()
    {
        //Validate file against the XSD schema. 
        //The validation should fail.
        Validate("notValidXSD.xml");
    } //Sample

    public static void main(String[] args)
    {
        Sample validation =  new Sample();
    } //main

    private void Validate(String filename)
    {
        try {
            Console.WriteLine(("Validating XML file " + filename.ToString()));
            txtReader = new XmlTextReader(filename);
            reader = new XmlValidatingReader(txtReader);

            // Set the validation event handler
            reader.add_ValidationEventHandler(new ValidationEventHandler
                (this.ValidationEventHandle));

            // Read XML data
            while(reader.Read()) {

            }
            Console.WriteLine("Validation finished. Validation {0}",
                (mSuccess == true) ? "successful" : "failed");
        }
        finally {
            //Close the reader.
            if (reader != null) {
                reader.Close();
            }
        }
    } //Validate

    //Display the validation error.
    private void ValidationEventHandle(Object sender, ValidationEventArgs args) 
    {
        mSuccess = false;
        Console.WriteLine(("\r\n\tValidation error: " + args.get_Message()));
    } //ValidationEventHandle
} //Sample

Im Beispiel werden die folgenden beiden Eingabedateien verwendet:

notValidXSD.xml (Das xsi:schemaLocation-Attribut kennzeichnet das XML-Schema für den Reader.)


<?xml version='1.0'?>
<bookstore xmlns="urn:bookstore-schema"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:bookstore-schema books.xsd">
  <book>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
  </book>
  <book genre="novel">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
</bookstore>

books.xsd


<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="urn:bookstore-schema"
    elementFormDefault="qualified"
    targetNamespace="urn:bookstore-schema">

 <xsd:element name="bookstore" type="bookstoreType"/>

 <xsd:complexType name="bookstoreType">
  <xsd:sequence maxOccurs="unbounded">
   <xsd:element name="book"  type="bookType"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="bookType">
  <xsd:sequence>
   <xsd:element name="title" type="xsd:string"/>
   <xsd:element name="author" type="authorName"/>
   <xsd:element name="price"  type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute name="genre" type="xsd:string"/>
 </xsd:complexType>

 <xsd:complexType name="authorName">
  <xsd:sequence>
   <xsd:element name="first-name"  type="xsd:string"/>
   <xsd:element name="last-name" type="xsd:string"/>
  </xsd:sequence>
 </xsd:complexType>

</xsd:schema>

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0
Anzeigen: