VB.Net Tutorial/XML/XML Schema — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 16:40, 26 мая 2010
Create XML Schema
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
public class Test
public Shared Sub Main
" Create the schema. This object acts as the root node.
Dim XS As New XmlSchema()
" Define a personal reference type.
Dim Personal As New XmlSchemaElement()
Personal.Name = "Personal"
Personal.SchemaTypeName = New XmlQualifiedName("boolean", "http://www.w3.org/2001/XMLSchema)
" Define a business reference type.
Dim Business As New XmlSchemaElement()
Business.Name = "BusType"
Dim BusType As New XmlSchemaComplexType()
Dim BusSeq As New XmlSchemaSequence()
Dim Position As New XmlSchemaElement()
Position.Name = "Position"
Position.MinOccurs = 1
Position.MaxOccurs = 1
Position.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema)
Dim CompanyName As New XmlSchemaElement()
CompanyName.Name = "CompanyName"
CompanyName.MinOccurs = 1
CompanyName.MaxOccurs = 1
CompanyName.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
BusSeq.Items.Add(Position)
BusSeq.Items.Add(CompanyName)
BusType.Particle = BusSeq
Business.SchemaType = BusType
XS.Items.Add(Personal)
XS.Items.Add(Business)
Dim MyAddress As New XmlSchemaElement
MyAddress.Name = "Addresses"
Dim MyAddressType As New XmlSchemaComplexType()
Dim MyAddressSeq As New XmlSchemaSequence()
Dim Items As New XmlSchemaElement()
Items.Name = "Item"
Items.MinOccurs = 1
Items.MaxOccursString = "unbounded"
Dim ThisType As New XmlSchemaComplexType()
Dim ThisSeq As New XmlSchemaSequence()
Dim FName As New XmlSchemaElement()
FName.Name = "FirstName"
FName.MinOccurs = 1
FName.MaxOccurs = 1
FName.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
Dim LName As New XmlSchemaElement()
LName.Name = "LastName"
LName.MinOccurs = 1
LName.MaxOccurs = 1
LName.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
Dim Address As New XmlSchemaElement()
Address.Name = "Address"
Address.MinOccurs = 1
Address.MaxOccursString = "unbounded"
Address.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
Dim City As New XmlSchemaElement()
City.Name = "City"
City.MinOccurs = 1
City.MaxOccurs = 1
City.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
Dim Region As New XmlSchemaElement()
Region.Name = "Region"
Region.MinOccurs = 0
Region.MaxOccurs = 1
Region.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
Dim PostalCode As New XmlSchemaElement()
PostalCode.Name = "PostalCode"
PostalCode.MinOccurs = 0
PostalCode.MaxOccurs = 1
PostalCode.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema")
Dim PersOrBus As New XmlSchemaChoice()
PersOrBus.MinOccurs = 1
PersOrBus.MaxOccurs = 1
Dim PersRef As New XmlSchemaElement()
PersRef.RefName = New XmlQualifiedName("Personal")
PersOrBus.Items.Add(PersRef)
Dim BusRef As New XmlSchemaElement()
BusRef.RefName = New XmlQualifiedName("BusType")
PersOrBus.Items.Add(BusRef)
ThisSeq.Items.Add(FName)
ThisSeq.Items.Add(LName)
ThisSeq.Items.Add(PersOrBus)
ThisSeq.Items.Add(Address)
ThisSeq.Items.Add(City)
ThisSeq.Items.Add(Region)
ThisSeq.Items.Add(PostalCode)
ThisType.Particle = ThisSeq
Items.SchemaType = ThisType
MyAddressSeq.Items.Add(Items)
MyAddressType.Particle = MyAddressSeq
MyAddress.SchemaType = MyAddressType
XS.Items.Add(MyAddress)
Dim Output As New XmlTextWriter("TestSchema.xsd", System.Text.Encoding.UTF8)
XS.Write(Output)
Output.Close()
End Sub
End class
Validating XML documents against Schemas
Imports System.Xml
Imports System.Xml.Schema " contains XmlSchemaSet class
Public Class Tester
Private Shared schemas As XmlSchemaSet " schemas to validate against
Private Shared valid As Boolean = True " validation result
Public Shared Sub Main
schemas = New XmlSchemaSet() " create the XmlSchemaSet class
schemas.Add("http://www.deitel.ru/booklist", "book.xsd")
Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.Schemas = schemas
AddHandler settings.ValidationEventHandler, AddressOf ValidationError
Dim reader As XmlReader = XmlReader.Create("YourFile.xml", settings)
While reader.Read()
End While
Console.WriteLine(valid)
valid = True " reset variable
reader.Close() " close reader stream
End Sub
Private Shared Sub ValidationError(ByVal sender As Object, _
ByVal arguments As ValidationEventArgs)
Console.WriteLine(arguments.Message)
valid = False
End Sub
End Class