XmlSchemaSet Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
XML Şema tanım dili (XSD) şemalarının önbelleğini içerir.
public ref class XmlSchemaSet
public class XmlSchemaSet
type XmlSchemaSet = class
Public Class XmlSchemaSet
- Devralma
-
XmlSchemaSet
Örnekler
Aşağıdaki örnek, içinde XmlSchemaSetdepolanan şemaları kullanarak bir XML dosyasını doğrular. XML dosyasındaki ad alanı, urn:bookstore-schemaiçinde doğrulama için kullanılacak şemayı XmlSchemaSet tanımlar. Örnekten alınan çıktı, XML dosyasının iki şema ihlali olduğunu gösterir:
İlk
<book>öğe bir<author>öğesi içeriyor, ancak<title>veya<price>öğesi yok.<author>Son<book>öğedeki öğesinde bir<first-name>ve<last-name>öğesi eksik ve bunun yerine geçersiz<name>bir öğesi var.
using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;
public class Sample
{
public static void Main() {
// Create the XmlSchemaSet class.
XmlSchemaSet sc = new XmlSchemaSet();
// Add the schema to the collection.
sc.Add("urn:bookstore-schema", "books.xsd");
// Set the validation settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas = sc;
settings.ValidationEventHandler += ValidationCallBack;
// Create the XmlReader object.
XmlReader reader = XmlReader.Create("booksSchemaFail.xml", settings);
// Parse the file.
while (reader.Read());
}
// Display any validation errors.
private static void ValidationCallBack(object sender, ValidationEventArgs e) {
Console.WriteLine($"Validation Error:\n {e.Message}\n");
}
}
// The example displays output like the following:
// Validation Error:
// The element 'book' in namespace 'urn:bookstore-schema' has invalid child element 'author'
// in namespace 'urn:bookstore-schema'. List of possible elements expected: 'title' in
// namespace 'urn:bookstore-schema'.
//
// Validation Error:
// The element 'author' in namespace 'urn:bookstore-schema' has invalid child element 'name'
// in namespace 'urn:bookstore-schema'. List of possible elements expected: 'first-name' in
// namespace 'urn:bookstore-schema'.
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO
Public Module Sample
Public Sub Main()
' Create the XmlSchemaSet class.
Dim sc as XmlSchemaSet = new XmlSchemaSet()
' Add the schema to the collection.
sc.Add("urn:bookstore-schema", "books.xsd")
' Set the validation settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.Schemas = sc
AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("booksSchemaFail.xml", settings)
' Parse the file.
While reader.Read()
End While
End Sub
' Display any validation errors.
Private Sub ValidationCallBack(sender as object, e as ValidationEventArgs)
Console.WriteLine($"Validation Error:{vbCrLf} {e.Message}")
Console.WriteLine()
End Sub
End Module
' The example displays output like the following:
' Validation Error:
' The element 'book' in namespace 'urn:bookstore-schema' has invalid child element 'author'
' in namespace 'urn:bookstore-schema'. List of possible elements expected: 'title' in
' namespace 'urn:bookstore-schema'.
'
' Validation Error:
' The element 'author' in namespace 'urn:bookstore-schema' has invalid child element 'name'
' in namespace 'urn:bookstore-schema'. List of possible elements expected: 'first-name' in
' namespace 'urn:bookstore-schema'.
Input
Örnek aşağıdaki iki giriş dosyasını kullanır.
booksSchemaFail.xml:
<?xml version='1.0'?>
<bookstore xmlns="urn:bookstore-schema">
<book>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
</book>
<book genre="novel">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
books.xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="urn:bookstore-schema"
elementFormDefault="qualified"
targetNamespace="urn:bookstore-schema">
<xsd:element name="bookstore" type="bookstoreType"/>
<xsd:complexType name="bookstoreType">
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="book" type="bookType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="bookType">
<xsd:sequence>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="author" type="authorName"/>
<xsd:element name="price" type="xsd:decimal"/>
</xsd:sequence>
<xsd:attribute name="genre" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="authorName">
<xsd:sequence>
<xsd:element name="first-name" type="xsd:string"/>
<xsd:element name="last-name" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Açıklamalar
Important
- Bilinmeyen veya güvenilmeyen kaynaklardan veya konumlardan şemaları kullanmayın. Bunu yaptığınızda kodunuzun güvenliği tehlikeye girer.
- XML şemaları (satır içi şemalar dahil) hizmet reddi saldırılarına karşı doğal olarak savunmasızdır; güvenilmeyen senaryolarda bunları kabul etmeyin.
- Şema doğrulama hata iletileri ve özel durumlar, şema dosyasının içerik modeli veya URI yolları hakkında hassas bilgileri kullanıma sunabilir. Bu bilgileri güvenilmeyen arayanlara göstermemeye dikkat edin.
- Ek güvenlik konuları "GüvenlikLe İlgili Önemli Noktalar" bölümünde ele alınmıştır.
XmlSchemaSet , XML Şema tanım dili (XSD) şemalarını depolayabileceğiniz bir önbellek veya kitaplıktır. XmlSchemaSet şemalara bir dosyadan veya URL'den erişmek yerine bellekte önbelleğe alarak performansı artırır. Her şema, ad alanı URI'sine ve şema kümeye eklendiğinde belirtilen konuma göre tanımlanır. Bir XML okuyucusunun XmlReaderSettings.SchemasXmlSchemaSet veri doğrulaması için kullanması gereken nesneyi atamak için özelliğini kullanırsınız.
Güvenlik konuları
Bilinmeyen veya güvenilmeyen kaynaklardan gelen şemaları kullanmayın. Bunu yaptığınızda kodunuzun güvenliği tehlikeye girer. Bir şemanın öğelerini dahil etme, içeri aktarma ve yeniden tanımlama konusunda başvuruda bulunulan dış ad alanları veya konumlar, bunları içeren veya içeri aktaran şemanın temel URI'sine göre çözümlenir. Örneğin, dahil edilen veya içeri aktarılan şemanın temel URI'si boşsa veya
nulldış konumlar geçerli dizine göre çözümlenir. XmlUrlResolver sınıfı, dış şemaları varsayılan olarak çözümlemek için kullanılır. Bir şemanın dahil etme, içe aktarma ve yeniden tanımlama öğelerini çözümlemeyi devre dışı bırakmak için XmlSchemaSet.XmlResolver özelliğininullolarak ayarlayın.Bu XmlSchemaSet sınıfı, XML şemasındaki normal ifadeleri ayrıştırmak ve eşleştirmek için System.Text.RegularExpressions.Regex sınıfını kullanır. Xml şemasında normal ifadelerle desen modellerinin doğrulanması daha fazla CPU kullanımı içerebilir ve yüksek kullanılabilirlik senaryolarında kaçınılmalıdır.
Sınıfın kullanılması XmlSchemaSet sonucunda ortaya çıkan özel durumlar, örneğin XmlSchemaException sınıfı güvenilmeyen senaryolarda kullanıma sunulmaması gereken hassas bilgiler içerebilir. Örneğin, SourceUri özelliği XmlSchemaException özel duruma neden olan şema dosyasının URI yolunu döndürür. SourceUri özelliği güvenilmeyen senaryolarda kullanıma sunulmamalıdır. Bu hassas bilgilerin güvenilmeyen senaryolarda kullanıma sunulmaması için özel durumlar düzgün bir şekilde işlenmelidir.
Oluşturucular
| Name | Description |
|---|---|
| XmlSchemaSet() |
XmlSchemaSet sınıfının yeni bir örneğini başlatır. |
| XmlSchemaSet(XmlNameTable) |
belirtilen XmlSchemaSetile sınıfının yeni bir örneğini XmlNameTable başlatır. |
Özellikler
| Name | Description |
|---|---|
| CompilationSettings |
için XmlSchemaCompilationSettingsöğesini XmlSchemaSet alır veya ayarlar. |
| Count |
içindeki mantıksal XML Şema tanım dili (XSD) şemalarının XmlSchemaSetsayısını alır. |
| GlobalAttributes |
içindeki tüm XML Şeması tanım dili (XSD) şemalarındaki tüm genel öznitelikleri XmlSchemaSetalır. |
| GlobalElements |
içindeki tüm XML Şeması tanım dili (XSD) şemalarındaki XmlSchemaSettüm genel öğeleri alır. |
| GlobalTypes |
içindeki tüm XML Şeması tanım dili (XSD) şemalarındaki XmlSchemaSettüm genel basit ve karmaşık türleri alır. |
| IsCompiled |
içindeki XML Şema tanım dilinin (XSD) XmlSchemaSet derlenip derlenmemiş olduğunu gösteren bir değer alır. |
| NameTable |
Yeni XML Şeması tanım dili (XSD) şemaları yüklenirken tarafından XmlNameTable kullanılan varsayılan XmlSchemaSet değeri alır. |
| XmlResolver |
Bir şemanın XmlResolver öğelerini dahil etme ve içeri aktarma bölümünde başvuruda bulunılan ad alanlarını veya konumları çözümlemek için kullanılan öğesini ayarlar. |
Yöntemler
| Name | Description |
|---|---|
| Add(String, String) |
BELIRTILEN URL'ye XML Şema tanım dili (XSD) şemasını XmlSchemaSetekler. |
| Add(String, XmlReader) |
içinde yer alan XML Şema tanım dili (XSD) şemasını XmlReaderXmlSchemaSetöğesine ekler. |
| Add(XmlSchema) |
verilen XmlSchema değerini öğesine XmlSchemaSetekler. |
| Add(XmlSchemaSet) |
verilen XmlSchemaSet içindeki tüm XML Şema tanım dili (XSD) şemalarını öğesine XmlSchemaSetekler. |
| Compile() |
öğesine eklenen XmlSchemaSet XML Şema tanım dili (XSD) şemalarını tek bir mantıksal şemaya derler. |
| Contains(String) |
Belirtilen hedef ad alanı URI'sine sahip bir XML Şema tanım dili (XSD) şemasının XmlSchemaSetiçinde olup olmadığını gösterir. |
| Contains(XmlSchema) |
Belirtilen XML Şeması tanım dilinin (XSD) XmlSchema nesnesinin XmlSchemaSetiçinde olup olmadığını gösterir. |
| CopyTo(XmlSchema[], Int32) |
Verilen dizinden XmlSchema başlayarak içindeki tüm XmlSchemaSet nesneleri verilen diziye kopyalar. |
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| Remove(XmlSchema) |
Belirtilen XML Şeması tanım dili (XSD) şemasını dosyasından XmlSchemaSetkaldırır. |
| RemoveRecursive(XmlSchema) |
Belirtilen XML Şeması tanım dili (XSD) şemasını ve öğesinden XmlSchemaSetiçeri aktarmış olduğu tüm şemaları kaldırır. |
| Reprocess(XmlSchema) |
içinde zaten var olan bir XML Şema tanım dili (XSD) şemasını yeniden işler XmlSchemaSet. |
| Schemas() |
içindeki tüm XML Şema tanım dili (XSD) şemalarından XmlSchemaSetoluşan bir koleksiyon döndürür. |
| Schemas(String) |
Verilen ad alanına ait olan içindeki tüm XML Şeması tanım dili (XSD) şemalarından XmlSchemaSet oluşan bir koleksiyon döndürür. |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |
Ekinlikler
| Name | Description |
|---|---|
| ValidationEventHandler |
XML Şema tanım dili (XSD) şema doğrulama hataları hakkında bilgi almak için bir olay işleyicisi belirtir. |