VB.Net Tutorial/XML/XML Schema — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 19:40, 26 мая 2010
Create XML Schema
<source lang="vbnet">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</source>
Validating XML documents against Schemas
<source lang="vbnet">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</source>