VB.Net/XML/XML Schema
Содержание
Compare the XML document generated from DataSet and Original one
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>
Generate XML Schema from XML document
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
Output data relation from XML document
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
Read XML without schema and output its structure
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>
Validating XML documents against Schemas
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
XMl schema generator
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