XmlReaderSettings.Schemas Özellik
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.
Şema doğrulaması gerçekleştirirken kullanılacak öğesini alır veya ayarlar XmlSchemaSet .
public:
property System::Xml::Schema::XmlSchemaSet ^ Schemas { System::Xml::Schema::XmlSchemaSet ^ get(); void set(System::Xml::Schema::XmlSchemaSet ^ value); };
public System.Xml.Schema.XmlSchemaSet Schemas { get; set; }
member this.Schemas : System.Xml.Schema.XmlSchemaSet with get, set
Public Property Schemas As XmlSchemaSet
Özellik Değeri
XmlSchemaSet Şema doğrulaması gerçekleştirirken kullanılacak. Varsayılan değer boş XmlSchemaSet bir nesnedir.
Örnekler
Aşağıdaki örnek, bir şemayı XmlReaderSettings XML belgesiyle ilişkilendirmek için nesnesini ve XmlReader.Create yöntemini kullanır. Şema, nesnesinin Schemas özelliğine XmlReaderSettings eklenir. özelliğinin Schemas değeri bir XmlSchemaSet nesnedir. Şema, XML belgesinin şema içerik modeline uygun olduğunu doğrulamak için kullanılır. Şema doğrulama hataları ve uyarıları nesnesinde ValidationEventHandler tanımlanan tarafından XmlReaderSettings işlenir.
using System;
using System.Xml;
using System.Xml.Schema;
class XmlSchemaSetExample
{
static void Main()
{
XmlReaderSettings booksSettings = new XmlReaderSettings();
booksSettings.Schemas.Add("http://www.contoso.com/books", "books.xsd");
booksSettings.ValidationType = ValidationType.Schema;
booksSettings.ValidationEventHandler += new ValidationEventHandler(booksSettingsValidationEventHandler);
XmlReader books = XmlReader.Create("books.xml", booksSettings);
while (books.Read()) { }
}
static void booksSettingsValidationEventHandler(object sender, ValidationEventArgs e)
{
if (e.Severity == XmlSeverityType.Warning)
{
Console.Write("WARNING: ");
Console.WriteLine(e.Message);
}
else if (e.Severity == XmlSeverityType.Error)
{
Console.Write("ERROR: ");
Console.WriteLine(e.Message);
}
}
}
Imports System.Xml
Imports System.Xml.Schema
Class XmlSchemaSetExample
Shared Sub Main()
Dim booksSettings As XmlReaderSettings = New XmlReaderSettings()
booksSettings.Schemas.Add("http://www.contoso.com/books", "books.xsd")
booksSettings.ValidationType = ValidationType.Schema
AddHandler booksSettings.ValidationEventHandler, New ValidationEventHandler(AddressOf booksSettingsValidationEventHandler)
Dim books As XmlReader = XmlReader.Create("books.xml", booksSettings)
While books.Read()
End While
End Sub
Shared Sub booksSettingsValidationEventHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)
If e.Severity = XmlSeverityType.Warning Then
Console.Write("WARNING: ")
Console.WriteLine(e.Message)
ElseIf e.Severity = XmlSeverityType.Error Then
Console.Write("ERROR: ")
Console.WriteLine(e.Message)
End If
End Sub
End Class
Örnekte giriş olarak books.xml dosyası kullanılır.
<bookstore xmlns="http://www.contoso.com/books">
<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<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" publicationdate="1991" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Örnek, giriş olarak books.xsd dosyasını kullanır.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="bookstore">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="author">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="first-name" type="xs:string" />
<xs:element minOccurs="0" name="last-name" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="price" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="genre" type="xs:string" use="required" />
<xs:attribute name="publicationdate" type="xs:unsignedShort" use="required" />
<xs:attribute name="ISBN" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Açıklamalar
Bu makale Schemas özelliği ile ilgilidir.
Important
- Bilinmeyen veya güvenilmeyen kaynaklardan veya konumlardan şemaları kullanmayın. Bunu yapmak kodunuzun güvenliğini tehlikeye atabilir.
- 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 bilgi için "Güvenlikle ilgili dikkat edilmesi gerekenler" bölümüne bakın.
XmlSchemaSet sınıfı yalnızca XML Şema tanım dili (XSD) şemalarını destekler. XmlReader yöntemi tarafından Create oluşturulan örnekler, XML-Data Azaltılmış (XDR) şema doğrulamasını etkinleştirecek şekilde yapılandırılamaz.
Güvenlik konuları
Bilinmeyen veya güvenilmeyen kaynaklardan gelen şemaları kullanmayın. Bunu yaptığınızda kodunuzun güvenliği tehlikeye girer. 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ğini
nullolarak ayarlayın.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.