Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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)
Syntax
'Declaration
Public Event ValidationEventHandler As ValidationEventHandler
'Usage
Dim instance As XmlValidatingReader
Dim handler As ValidationEventHandler
AddHandler instance.ValidationEventHandler, handler
public event ValidationEventHandler ValidationEventHandler
public:
event ValidationEventHandler^ ValidationEventHandler {
void add (ValidationEventHandler^ value);
void remove (ValidationEventHandler^ value);
}
/** @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.
Hinweise
Hinweis
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).
Hinweis
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.
Beispiel
Im folgenden Beispiel wird eine Datei anhand eines XSD (XML Schema Definition)-Schemas validiert.
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Imports Microsoft.VisualBasic
Public Class Sample
Private txtreader As XmlTextReader = Nothing
Private reader As XmlValidatingReader = Nothing
Private m_success As Boolean = True
Public Sub New()
'Validate file against the XSD schema.
'The validation should fail.
Validate("notValidXSD.xml")
End Sub 'New
Public Shared Sub Main()
Dim validation As New Sample()
End Sub 'Main
Private Sub Validate(filename As String)
Try
Console.WriteLine("Validating XML file " & filename.ToString())
txtreader = New XmlTextReader(filename)
reader = New XmlValidatingReader(txtreader)
' Set the validation event handler
AddHandler reader.ValidationEventHandler, AddressOf Me.ValidationEventHandle
' Read XML data
While reader.Read()
End While
Console.WriteLine("Validation finished. Validation {0}", IIf(m_success, "successful", "failed"))
Finally
'Close the reader.
If Not (reader Is Nothing) Then
reader.Close()
End If
End Try
End Sub 'Validate
'Display the validation error.
Private Sub ValidationEventHandle(sender As Object, args As ValidationEventArgs)
m_success = False
Console.WriteLine(ControlChars.CrLf & ControlChars.Tab & "Validation error: " & args.Message)
End Sub 'ValidationEventHandle
End Class 'Sample
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 );
}
}
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Schema;
public ref class Sample
{
private:
XmlTextReader^ txtreader;
XmlValidatingReader^ reader;
Boolean m_success;
public:
Sample()
{
txtreader = nullptr;
reader = nullptr;
m_success = true;
//Validate file against the XSD schema.
//The validation should fail.
Validate( "notValidXSD.xml" );
}
private:
void Validate( String^ filename )
{
try
{
Console::WriteLine( "Validating XML file {0}", filename );
txtreader = gcnew XmlTextReader( filename );
reader = gcnew XmlValidatingReader( txtreader );
// Set the validation event handler
reader->ValidationEventHandler += gcnew ValidationEventHandler( this, &Sample::ValidationEventHandle );
// Read XML data
while ( reader->Read() )
{}
Console::WriteLine( "Validation finished. Validation {0}", (m_success == true ? (String^)"successful" : "failed") );
}
finally
{
//Close the reader.
if ( reader != nullptr )
reader->Close();
}
}
//Display the validation error.
void ValidationEventHandle( Object^ /*sender*/, ValidationEventArgs^ args )
{
m_success = false;
Console::WriteLine( "\r\n\tValidation error: {0}", args->Message );
}
};
int main()
{
gcnew Sample;
}
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>
Plattformen
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.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
XmlValidatingReader-Klasse
XmlValidatingReader-Member
System.Xml-Namespace
XmlSeverityType