VB.Net/XML/XML Schema

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

Compare the XML document generated from DataSet and Original one

<source lang="vbnet"> Imports System Imports System.Data Module FidelityTester

   Sub Main()
       Dim MyDS As New DataSet()
       MyDS.ReadXmlSchema("book.xdr")
       MyDS.ReadXml("book.xml")
       MyDS.WriteXml("Book_After.xml")
   End Sub

End Module

"book.xdr "<?xml version = "1.0"?> "<Schema xmlns = "urn:schemas-microsoft-com:xml-data"> " <ElementType name = "title" content = "textOnly" " model = "closed" /> " <ElementType name = "book" content = "eltOnly" model = "closed"> " <element type = "title" minOccurs = "1" maxOccurs = "1" /> " </ElementType> " <ElementType name = "books" content = "eltOnly" model = "closed"> " <element type = "book" minOccurs = "0" maxOccurs = "*" /> " </ElementType> "</Schema> "File: book.xml "<?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>


Generate XML Schema from XML document

<source lang="vbnet"> Imports System Imports System.Xml Imports System.Xml.Schema Imports System.IO Imports System.Collections Imports System.Data Public Class MainClass

   Shared Sub Main()
     Dim nsArray As String() = {""}
     Dim MyDS As DataSet = New DataSet()
     MyDS.ReadXml("book.xml")
     MyDS.WriteXmlSchema("InferredSchema.xds")
   End Sub

End Class


      </source>


Output data relation from XML document

<source lang="vbnet"> Imports System Imports System.Xml Imports System.Xml.Schema Imports System.IO Imports System.Collections Imports System.Data Public Class MainClass

   Shared Sub Main()
     Dim nsArray As String() = {""}
     Dim MyDS As DataSet = New DataSet()
     MyDS.ReadXml("book.xml")
     Console.WriteLine("Relation without schema:")
     Dim myRelation As DataRelation
     For Each myRelation In MyDS.Relations
        Console.WriteLine(myRelation.RelationName)
     Next
   End Sub

End Class


      </source>


Read XML without schema and output its structure

<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 nsArray As String() = {""}
     Dim MyDS As DataSet = New DataSet()
     MyDS.ReadXml("book.xml")
     Console.WriteLine("Inferred Relational Structure:")
     Dim myTable As DataTable
     For Each myTable In MyDS.Tables
        Console.WriteLine("Table {0}", myTable.TableName)
        Dim myColumn As DataColumn
        For Each myColumn In myTable.Columns
           Console.WriteLine("  {0}", myColumn.ColumnName)
        Next
     Next
   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>


Validating XML documents against Schemas

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

  Shared Dim valid As Boolean " validation result
  Shared Sub Main()
      Dim schemas As XmlSchemaCollection " Schemas
     valid = True " assume document is valid
     " get Schema(s) for validation
     schemas = New XmlSchemaCollection()
     schemas.Add("book", "book.xdr")
     " get XML document
     Dim reader As XmlTextReader = _
        New XmlTextReader("document.xml")
     " get validator
     Dim validator As XmlValidatingReader = _
        New XmlValidatingReader(reader)
     " assign Schema(s)
     validator.Schemas.Add(schemas)
     " Microsoft XDR validation
     validator.ValidationType = ValidationType.XDR
     " register event handler for validation error(s)
     AddHandler validator.ValidationEventHandler, _
        AddressOf ValidationError
     " validate document node-by-node
     While validator.Read
        " empty body
     End While
     " check validation result
     If valid Then
        Console.WriteLine("Document is valid")
     End If
     valid = True " reset variable
     validator.Close()
  End Sub 
  " event handler for validation error
  Shared Private Sub ValidationError(ByVal sender As Object, _
     ByVal arguments As ValidationEventArgs)
     Console.WriteLine(arguments.Message)
     valid = False " validation failed
  End Sub " ValidationError

End Class


      </source>


XMl schema generator

<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 Schema As XmlSchema = New XmlSchema()
       Dim ElementBook As New XmlSchemaElement()
       Schema.Items.Add(ElementBook)
       ElementBook.Name = "Book"
       Dim ComplexType As New XmlSchemaComplexType()
       ElementBook.SchemaType = ComplexType
       Dim Sequence As New XmlSchemaSequence()
       ComplexType.Particle = Sequence
       Dim ElementTitle As New XmlSchemaElement()
       ElementTitle.Name = "Title"
       ElementTitle.SchemaTypeName = New XmlQualifiedName("string", _
                                      "http://www.w3.org/2001/XMLSchema")
       Dim ElementPublisher As New XmlSchemaElement()
       ElementPublisher.Name = "Publisher"
       ElementPublisher.SchemaTypeName = New XmlQualifiedName("string", _
                                      "http://www.w3.org/2001/XMLSchema")
       Sequence.Items.Add(ElementTitle)
       Sequence.Items.Add(ElementPublisher)
       Schema.rupile(New ValidationEventHandler(AddressOf ValidationHandler))
       Schema.Write(Console.Out)
   End Sub
   Shared Sub ValidationHandler(ByVal sender As Object, _
                         ByVal args As ValidationEventArgs)
       Console.WriteLine("Schema Validation Failed.")
       Console.WriteLine(args.Message)
   End Sub

End Class


      </source>