Visual Basic'te DTD, XDR veya XSD kullanarak XML belgesini doğrulama
Bu makalede, Visual Basic 2005 veya Visual Basic .NET'te DTD, XDR şeması veya XSD şemasına karşı XML belgesini doğrulamak için sınıfının nasıl kullanılacağı XmlValidatingReader
gösterilmektedir. Ayrıca şemaları önbelleğe alarak doğrulamayı iyileştirmeyi de açıklar.
Orijinal ürün sürümü: Visual Basic
Özgün KB numarası: 315533
Özet
Genişletilebilir biçimlendirme dili (XML) belgeleri öğeler ve öznitelikler içerir ve uygulamalarla kuruluşlar arasında veri alışverişi yapmak için esnek ve güçlü bir yol sağlar. Xml belgesinin izin verilebilir yapısını ve içeriğini belirtmek için, Belge Türü Tanımı (DTD), Microsoft XML-Data Azaltılmış (XDR) şeması veya XML Şema tanımı dili (XSD) şeması yazabilirsiniz.
XSD şemaları, .NET Framework XML dil bilgisi belirtmenin tercih edilen yoludur, ancak DTD'ler ve XDR şemaları da desteklenir.
Bu makalede, Microsoft Visual Basic 2005 veya Microsoft Visual Basic .NET'te xml belgesine DTD, XDR şeması veya XSD şeması uygulamayı öğreneceksiniz. Ardından xml belgesini belirtilen dil bilgisi ile doğrulamak için XmlValidatingReader sınıfını kullanmayı öğreneceksiniz. Ayrıca XML doğrulamasını iyileştirmenin bir yolu olarak şemaları bellekte önbelleğe almak için XmlSchemaCollection sınıfını kullanmayı da öğreneceksiniz.
Gereksinimler
Aşağıdaki listede ihtiyacınız olan önerilen donanım, yazılım, ağ altyapısı ve hizmet paketleri özetlenmiştir: Microsoft Visual Basic 2005 veya Microsoft Visual Basic .NET
Bu makale, aşağıdaki Microsoft .NET Framework Sınıf Kitaplığı ad alanlarını ifade eder:
System.Xml
System.Xml.Schema
Bu makalede, aşağıdaki konular hakkında bilgi sahibi olduğunuz varsayılır:
- Visual Basic 2005 veya Visual Basic .NET söz dizimi
- Doğrulama sorunları da dahil olmak üzere XML kavramları
XML belgesi oluşturma
Microsoft Visual Studio 2005 veya Microsoft Visual Studio .NET'i başlatın. Ardından yeni bir XML dosyası oluşturun (Dosya menüsünde Yeni'nin üzerine gelin ve Dosya'ya tıklayın).
XML Dosya türünü seçin ve aç'a tıklayın.
Katalogdaki bir ürünü temsil etmek için XML belgesine aşağıdaki verileri ekleyin:
<Product ProductID="123"> <ProductName>Rugby jersey</ProductName> </Product>
Dosyayı Product.xml olarak daha sonra kolayca erişilebileceği bir klasöre kaydedin (bu makaledeki kod örnekleri adlı
C:\MyFolder
bir klasör olduğunu varsayar).
DTD oluşturma ve XML belgesine bağlanma
Visual Studio 2005'te veya Visual Studio .NET'te, Dosya menüsünde Yeni'nin üzerine gelin ve Dosya'ya tıklayın.
Metin Dosyası türünü seçin ve aç'a tıklayın.
XML belgesinin dil bilgisini açıklamak için aşağıdaki DTD bildirimlerini dosyaya ekleyin:
<!ELEMENT Product (ProductName)> <!ATTLIST Product ProductID CDATA #REQUIRED> <!ELEMENT ProductName (#PCDATA)>
Dosyayı Xml belgenizle aynı klasöre Product.dtd olarak kaydedin.
Visual Studio 2005 veya Visual Studio .NET'te Product.xml yeniden açın; bunu yapmak için, Dosya menüsünde Aç'ın üzerine gelin ve Dosya'ya tıklayın. Aşağıdaki gibi bir DOCTYPE deyimi (satırın
?xml version="1.0"
altına) ekleyin. Bu, XML belgesini DTD dosyasına bağlar).<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE Product SYSTEM "Product.dtd">
Değiştirilen XML belgesini ProductWithDTD.xmlolarak kaydedin.
DTD kullanarak doğrulama gerçekleştirme
Visual Studio 2005'te veya Visual Studio .NET'te ValidateXmlUsingVB adlı yeni bir Visual Basic Konsol Uygulaması projesi oluşturun.
Visual Studio 2005 veya Visual Studio .NET , Module1.vb adlı yeni bir dosya görüntüler. Bu dosyanın başına aşağıdaki gibi iki Imports deyimi ekleyin:
Imports System.Xml ' For XmlTextReader and XmlValidatingReader Imports System.Xml.Schema ' For XmlSchemaCollection (used later)
Module1'de (Main alt alanının başlangıcından önce), aşağıdaki gibi isValid adlı bir boole değişkeni bildirin:
'If a validation error occurs, ' you will set this flag to False ' in the validation event handler. Private isValid As Boolean = True
Ana alt yordamda, xml belgesini bir metin dosyasından okumak için bir XmlTextReader nesnesi oluşturun. Ardından, bu XML verilerini doğrulamak için bir
XmlValidatingReader
nesne oluşturun:Dim r As New XmlTextReader("C:\MyFolder\ProductWithDTD.xml") Dim v As New XmlValidatingReader(r)
XmlValidatingReader nesnesinin, gerekli doğrulama türünü (DTD, XDR veya Schema) gösteren bir ValidationType özelliği vardır. Bu özelliği aşağıdaki gibi DTD olarak ayarlayın:
v.ValidationType = ValidationType.DTD
Herhangi bir doğrulama hatası oluşursa, doğrulayıcı okuyucu bir doğrulama olayı oluşturur. Doğrulama olay işleyicisini kaydetmek için aşağıdaki kodu ekleyin (bu bölümün 8. adımında MyValidationEventHandler alt yordamını uygulayacaksınız):
AddHandler v.ValidationEventHandler, AddressOf MyValidationEventHandler
XML belgesini okumak ve doğrulamak için aşağıdaki kodu ekleyin. Herhangi bir doğrulama hatası oluşursa, hatayı işlemek için MyValidationEventHandler çağrılır. Bu alt yordam False olarak ayarlanır
isValid
(bu bölümün 8. adımına bakın). Belgenin geçerli mi yoksa geçersiz mi olduğunu görmek için doğrulamadan sonra isValid'nin durumunu de kontrol edebilirsiniz.While v.Read()' Could add code here to process the content. End While v.Close()' Check whether the document is valid or invalid. If isValid Then Console.WriteLine("Document is valid") Else Console.WriteLine("Document is invalid") End If
Main alt yordamdan sonra MyValidationEventHandler alt yordamını aşağıdaki gibi yazın:
Public Sub MyValidationEventHandler(ByVal sender As Object, _ ByVal args As ValidationEventArgs) isValid = False Console.WriteLine("Validation event" & vbCrLf & args.Message) End Sub
Uygulamayı derleyin ve çalıştırın.
Uygulamanın XML belgesinin geçerli olduğunu bildirmesi gerekir. 10. Visual Studio 2005'te veya Visual Studio .NET'te ProductWithDTD.xml geçersiz hale getirmek için değiştirin (örneğin, ProductName Rugby formasını/ ProductName öğesini silin). 11. Uygulamayı yeniden çalıştırın.
Uygulama aşağıdaki hata iletisini göstermelidir:
Doğrulama olayı Öğesi 'Product' eksik içeriğe sahip. 'ProductName' bekleniyor. file:///C:/MyFolder/ProductWithDTD.xml(4, 3) konumunda bir hata oluştu. Belge geçersiz
XDR şeması oluşturma ve XML belgesine bağlanma
Visual Studio 2005'te veya Visual Studio .NET'te, Dosya menüsünde Yeni'nin üzerine gelin ve Dosya'ya tıklayın.
Metin Dosyası türünü seçin ve aç'a tıklayın.
XML belgesinin dil bilgisini açıklamak için aşağıdaki XDR şema tanımlarını dosyaya ekleyin:
<?xml version="1.0"?> <Schema name="ProductSchema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <AttributeType name="ProductID" dt:type="int"/> <ElementType name="ProductName" dt:type="string"/> <ElementType name="Product" content="eltOnly"> <attribute type="ProductID" required="yes"/> <element type="ProductName"/> </ElementType> </Schema>
Dosyayı Product.xdr olarak XML belgenizle aynı klasöre kaydedin.
özgün Product.xmlyeniden açın ve ardından aşağıdaki gibi XDR şemasına bağlayın:
<?xml version="1.0" encoding="utf-8" ?> <Product ProductID="123" xmlns="x-schema:Product.xdr"> <ProductName>Rugby jersey</ProductName> </Product>
Değiştirilen XML belgesini ProductWithXDR.xmlolarak kaydedin.
XDR şeması kullanarak doğrulama gerçekleştirme
XmlTextReader'ın ProductWithXDR.xmlyükleyebilmesi için uygulamanızı aşağıdaki gibi değiştirin:
Dim r As New XmlTextReader("C:\MyFolder\ProductWithXDR.xml")
Doğrulayıcı okuyucunun
ValidationType
XDR doğrulamasını aşağıdaki gibi gerçekleştirmesi için XDR olarak ayarlayın:v.ValidationType = ValidationType.XDR
Uygulamayı derleyin ve çalıştırın.
Uygulamanın XML belgesinin geçerli olduğunu bildirmesi gerekir.
ProductWithXDR.xml bilerek geçersiz hale getirmek için değiştirin.
Uygulamayı yeniden çalıştırın.
Uygulama bir doğrulama hatası bildirmelidir.
XSD şeması oluşturma ve XML belgesine bağlanma
Visual Studio .NET'te, Dosya menüsünde Yeni'nin üzerine gelin ve dosya'ya tıklayın.
Metin Dosyası türünü seçin ve aç'a tıklayın.
XML belgesinin dil bilgisini açıklamak için dosyaya aşağıdaki XSD şema tanımını ekleyin:
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="Product"> <xsd:complexType> <xsd:sequence> <xsd:element name="ProductName" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="ProductID" use="required" type="xsd:int"/> </xsd:complexType> </xsd:element> </xsd:schema>
Dosyayı XML belgenizle aynı klasöre Product.xsd olarak kaydedin.
Özgün Product.xmlyeniden açın ve ardından aşağıdaki gibi XSD şemasına bağlayın:
<?xml version="1.0" encoding="utf-8" ?> <Product ProductID="123" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Product.xsd"> <ProductName>Rugby jersey</ProductName> </Product>
Değiştirilen XML belgesini ProductWithXSD.xmlolarak kaydedin.
XSD şeması kullanarak doğrulama gerçekleştirme
Uygulamanızı, yüklerin
XmlTextReader
ProductWithXSD.xmliçin aşağıdaki gibi değiştirin:Dim r As New XmlTextReader("C:\MyFolder\ProductWithXSD.xml")
Doğrulayıcı okuyucunun
ValidationType
aşağıdaki gibi XSD şema doğrulaması gerçekleştirmesi için Şeması olarak ayarlayın:v.ValidationType = ValidationType.Schema
XSD şemasını kullanarak XML belgesini doğrulamak için uygulamayı derleyin ve çalıştırın.
Uygulamanın XML belgesinin geçerli olduğunu bildirmesi gerekir.
XSD şemasında ad alanlarını kullanma
Visual Studio 2005 veya Visual Studio .NET'te ProductWithXSD.xmlaçın. Belgede varsayılan ad alanı olan
urn:MyNamespace
öğesini bildirin. Bu ad alanındaki içeriği doğrulamak için XSD şemasını belirtmek için XSD bağlantısını aşağıdaki gibi değiştirin:<?xml version="1.0" encoding="utf-8"?> <Product ProductID="123" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:MyNamespace" xsi:schemaLocation="urn:MyNamespace Product.xsd"> <ProductName>Rugby jersey</ProductName> </Product>
ProductWithXSD.xmlkaydedin.
Product.xsd dosyasını açın, XML sekmesine tıklayın ve ardından xsd:schema start etiketini aşağıdaki gibi değiştirerek şemanın ad alanına
urn:MyNamespace
uygulanabilmesini sağlayın:<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:MyNamespace" elementFormDefault="qualified">
Product.xsd dosyasını kaydedin.
XSD şemasını kullanarak XML belgesini doğrulamak için uygulamayı çalıştırın.
Önbellek ad alanları
Visual Studio 2005 veya Visual Studio .NET'te Module1.vb açın. Main alt öğesinin başında aşağıdaki gibi bir
XmlSchemaCollection
nesne oluşturun:Dim cache As New XmlSchemaCollection()
XmlSchemaCollection
nesnesi, geliştirilmiş performans için şemaları bellekte önbelleğe almanızı sağlar. Her şema farklı bir ad alanıyla ilişkilendirilir. Product.xsd'yi önbelleğe almak için aşağıdaki kodu ekleyin:cache.Add("urn:MyNamespace", "C:\MyFolder\Product.xsd")
nesnesini oluşturan koddan
XmlValidatingReader
sonra aşağıdaki deyimini ekleyin. Bu, okuyucunun bellek içi şemaları kullanabilmesi içinXmlValidatingReader
şema önbelleğini öğesine ekler.v.Schemas.Add(cache)
Doğrulama
- Uygulamayı derleyin ve çalıştırın.
- XML belgesinin XSD şemasında hala doğrulandığını doğrulayın.
- Kasıtlı olarak geçersiz hale getirmek için ProductWithXSD.xml bazı değişiklikler yapın.
- Uygulamanın bu doğrulama hatalarını algıladığını doğrulayın.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin