VB.Net/XML/XML Validation

Материал из VB Эксперт
Перейти к: навигация, поиск

Console Validator

<source lang="vbnet"> Imports System Imports System.Xml Imports System.Xml.Schema

   Public Class MainClass
       Public Shared Sub Main(ByVal args As String())
           Dim xmlValidator As New ConsoleValidator
           Dim success As Boolean = xmlValidator.ValidateXML(args(0), args(1))
           If Not success Then
               Console.WriteLine("Validation failed.")
           Else
               Console.WriteLine("Validation succeeded.")
           End If
       End Sub
   End Class
   Public Class ConsoleValidator
       Private failed As Boolean
       Public Function ValidateXML(ByVal xmlFileName As String, ByVal schemaFileName As String)
           Dim settings As New XmlReaderSettings
           settings.ValidationType = ValidationType.Schema
           Dim schemas As New XmlSchemaSet
           settings.Schemas = schemas
           schemas.Add(Nothing, schemaFileName)
           AddHandler settings.ValidationEventHandler, AddressOf HandleValidationEvents
           Dim validator As XmlReader = XmlReader.Create(xmlFileName, settings)
           failed = False
           Try
               While validator.Read()
               End While
           Catch ex As Exception
               Console.WriteLine(ex.Message)
               failed = True
           End Try
           validator.Close()
           Return Not failed
       End Function
       Private Sub HandleValidationEvents(ByVal sender As Object, ByVal args As ValidationEventArgs)
           failed = True
           Console.WriteLine(args.Message)
       End Sub
   End Class
  
   
 </source>


Handle validation event

<source lang="vbnet">

Public Class Example9

   Shared Sub Main
       Dim doc As System.Xml.XmlDocument
       Dim editor, editor2 As System.Xml.XPath.XPathNavigator
       Dim writer As System.Xml.XmlWriter
       Dim schemaSet As System.Xml.Schema.XmlSchemaSet
       Dim handler As System.Xml.Schema.ValidationEventHandler
       doc = New System.Xml.XmlDocument()
       doc.Load("pubs.xml")
       For Each editor In doc.CreateNavigator().Select("/pubs/titles[authors/@au_lname="Green"]")
           editor2 = editor.SelectSingleNode("authors[@au_lname!="Green"]")
           If Not IsNothing(editor2) Then
               editor2.DeleteSelf()
           End If
           writer = editor.AppendChild()
           writer.WriteStartElement("authors")
           writer.WriteAttributeString("au_lname", "A")
           writer.WriteAttributeString("au_fname", "B")
           writer.Close()
       Next
       editor = doc.CreateNavigator()
       schemaSet = New System.Xml.Schema.XmlSchemaSet()
       schemaSet.Add(Nothing, "pubs.xsd")
       schemaSet.rupile()
       handler = New System.Xml.Schema.ValidationEventHandler(AddressOf ValidationCallback)
       doc.Save("output.xml")
   End Sub
   Public Sub ValidationCallback(ByVal sender As Object, ByVal e As System.Xml.Schema.ValidationEventArgs)
       System.Console.WriteLine(e.Message)
   End Sub

End Class


 </source>


Validate XML document with Validation Error Handler

<source lang="vbnet"> Imports System Imports System.Xml Imports System.Xml.Schema Imports System.IO Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Collections Imports System.Data Imports System.Windows.Forms

Public Class MainClass

   Shared Sub Main()
       Dim xtr As New XmlTextReader("book.xml")
       Dim xvr As New XmlValidatingReader(xtr)
       xvr.ValidationType = ValidationType.Schema
       AddHandler xvr.ValidationEventHandler, _
                  New ValidationEventHandler(AddressOf ValidationErrorHandler)
       While xvr.Read()
           If TypeOf xvr.SchemaType Is XmlSchemaComplexType Then
               Console.WriteLine("{0} - {1}", xvr.NodeType, xvr.Name)
               While xvr.MoveToNextAttribute()
                   Console.WriteLine("  {0} - {1}: {2}", _
                                       xvr.NodeType, xvr.Name, xvr.Value)
               End While
           End If
       End While
   End Sub
   Shared Sub ValidationErrorHandler(ByVal sender As Object, _
                              ByVal args As ValidationEventArgs)
       Console.WriteLine("XML Document Validation Failure")
       Console.WriteLine()
       Console.WriteLine("The ValidatingReader Failed with severity : {0}", _
                                                               args.Severity)
       Console.WriteLine("The failure message was: {0}", args.Message)
   End Sub

End Class

"<?xml version = "1.0"?> "<books xmlns = "x-schema:book.xdr"> " <book> " <title>C# How to Program</title> " </book> " <book> " <title>Java How to Program, 4/e</title> " </book> " <book> " <title>Visual Basic .NET How to Program</title> " </book> " <book> " <title>Advanced Java 2 Platform How to Program</title> " </book> " <book> " <title>Python How to Program</title> " </book> "</books>


 </source>