XmlValidatingReader.ValidationEventHandler イベント
アセンブリ: System.Xml (system.xml.dll 内)

Dim instance As XmlValidatingReader Dim handler As ValidationEventHandler AddHandler instance.ValidationEventHandler, handler
public: event ValidationEventHandler^ ValidationEventHandler { void add (ValidationEventHandler^ value); void remove (ValidationEventHandler^ value); }

![]() |
---|
Microsoft .NET Framework version 2.0 では、XmlValidatingReader クラスは使用されなくなりました。検証を実行する XmlReader のインスタンスは、XmlReaderSettings クラスおよび Create メソッドを使用して作成できます。詳細については、「XmlReader による XML データの検証」を参照してください。 |
これらのイベントは、Read 中で、DTD、XDR、Schema、または Auto の ValidationType が指定されている場合にだけ発生します。
イベント ハンドラが設定されていない場合は、XmlException が最初の検証エラー (重大度レベルが XmlSeverityType.Error と等価) でスローされます。
![]() |
---|
要素が検証エラーを報告すると、その要素の残りのコンテンツ モデルは検証されませんが、その子は検証されます。リーダーは、指定した要素の最初のエラーだけを報告します。 |
コールバック ハンドラは、ValidationEventArgs.Severity プロパティを使用して、確実に XML インスタンス ドキュメントをスキーマで検証できます。Severity プロパティを使用すると、致命的なエラーを示す検証エラー (重大度レベルが XmlSeverityType.Error と等価) とスキーマ情報が使用できないことを示す検証警告 (重大度レベルが XmlSeverityType.Warning と等価) を区別できます。

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
notValidXSD.xml (xsi:schemaLocation 属性は、リーダーの XML スキーマを識別します)
<?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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- XmlValidatingReader.ValidationEventHandler イベントのページへのリンク