XmlSchemaSet Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Berisi cache skema bahasa definisi Skema XML (XSD).
public ref class XmlSchemaSet
public class XmlSchemaSet
type XmlSchemaSet = class
Public Class XmlSchemaSet
- Warisan
-
XmlSchemaSet
Contoh
Contoh berikut memvalidasi file XML menggunakan skema yang disimpan di XmlSchemaSet. Namespace dalam file XML, urn:bookstore-schema, mengidentifikasi skema mana dalam yang XmlSchemaSet akan digunakan untuk validasi. Output dari contoh menunjukkan bahwa file XML memiliki dua pelanggaran skema:
Elemen pertama
<book>berisi<author>elemen tetapi tidak ada<title>atau<price>elemen.Elemen
<author>dalam elemen terakhir<book>kehilangan elemen<first-name>dan<last-name>dan malah memiliki elemen<name>yang tidak valid.
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
Sampel menggunakan dua file input berikut.
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>
Keterangan
Important
- Jangan gunakan skema dari sumber atau lokasi yang tidak diketahui atau tidak tepercaya. Melakukannya akan membahayakan keamanan kode Anda.
- Skema XML (termasuk skema sebaris) secara inheren rentan terhadap penolakan serangan layanan; jangan menerimanya dalam skenario yang tidak tepercaya.
- Pesan kesalahan validasi skema dan pengecualian dapat mengekspos informasi sensitif tentang model konten atau jalur URI ke file skema. Berhati-hatilah untuk tidak mengekspos informasi ini kepada penelepon yang tidak tepercaya.
- Pertimbangan keamanan tambahan tercakup di bagian "Pertimbangan Keamanan".
XmlSchemaSet adalah cache atau pustaka tempat Anda dapat menyimpan skema bahasa definisi Skema XML (XSD). XmlSchemaSet meningkatkan performa dengan menyimpan skema dalam memori alih-alih mengaksesnya dari file atau URL. Setiap skema diidentifikasi melalui URI namespace dan lokasi yang telah ditentukan ketika skema ditambahkan ke set. Anda menggunakan XmlReaderSettings.Schemas properti untuk menetapkan XmlSchemaSet objek yang harus digunakan pembaca XML untuk validasi data.
Pertimbangan keamanan
Jangan gunakan skema dari sumber yang tidak diketahui atau tidak tepercaya. Melakukannya akan membahayakan keamanan kode Anda. Namespace atau lokasi eksternal yang dirujuk dalam elemen include, import, dan redefine skema diselesaikan berdasarkan URI dasar dari skema yang mencakup atau mengimpor elemen-elemen tersebut. Misalnya, jika URI dasar dari skema yang menyertakan atau mengimpor kosong atau
null, lokasi eksternal disesuaikan berdasarkan direktori saat ini. Kelas XmlUrlResolver digunakan untuk mengatasi skema eksternal secara default. Untuk menonaktifkan resolusi elemen sertakan, impor, dan tentukan ulang elemen skema, atur properti XmlSchemaSet.XmlResolver kenull.Kelas XmlSchemaSet menggunakan System.Text.RegularExpressions.Regex kelas untuk mengurai dan mencocokkan ekspresi reguler dalam skema XML. Validasi faset pola dengan ekspresi reguler dalam skema XML dapat melibatkan peningkatan penggunaan CPU dan harus dihindari dalam skenario ketersediaan tinggi.
Pengecualian yang dimunculkan sebagai akibat dari penggunaan XmlSchemaSet kelas, seperti XmlSchemaException kelas mungkin berisi informasi sensitif yang tidak boleh diekspos dalam skenario yang tidak tepercaya. Misalnya, SourceUri properti dari XmlSchemaException mengembalikan jalur URI ke file skema yang menyebabkan pengecualian. Properti SourceUri tidak boleh diekspos dalam skenario yang tidak tepercaya. Pengecualian harus ditangani dengan benar sehingga informasi sensitif ini tidak terekspos dalam skenario yang tidak tepercaya.
Konstruktor
| Nama | Deskripsi |
|---|---|
| XmlSchemaSet() |
Menginisialisasi instans baru dari kelas XmlSchemaSet. |
| XmlSchemaSet(XmlNameTable) |
Menginisialisasi instans XmlSchemaSet baru kelas dengan yang ditentukan XmlNameTable. |
Properti
| Nama | Deskripsi |
|---|---|
| CompilationSettings |
Mendapatkan atau mengatur XmlSchemaCompilationSettings untuk XmlSchemaSet. |
| Count |
Mendapatkan jumlah skema bahasa definisi Skema XML logis (XSD) di XmlSchemaSet. |
| GlobalAttributes |
Mendapatkan semua atribut global dalam semua skema bahasa definisi Skema XML (XSD) di XmlSchemaSet. |
| GlobalElements |
Mendapatkan semua elemen global dalam semua skema bahasa definisi Skema XML (XSD) di XmlSchemaSet. |
| GlobalTypes |
Mendapatkan semua jenis sederhana dan kompleks global dalam semua skema bahasa definisi Skema XML (XSD) di XmlSchemaSet. |
| IsCompiled |
Mendapatkan nilai yang menunjukkan apakah skema bahasa definisi Skema XML (XSD) dalam telah dikompilasi XmlSchemaSet . |
| NameTable |
Mendapatkan default XmlNameTable yang digunakan oleh XmlSchemaSet saat memuat skema bahasa definisi Skema XML (XSD) baru. |
| XmlResolver |
Mengatur yang XmlResolver digunakan untuk mengatasi namespace atau lokasi yang dirujuk dalam menyertakan dan mengimpor elemen skema. |
Metode
| Nama | Deskripsi |
|---|---|
| Add(String, String) |
Menambahkan skema bahasa definisi Skema XML (XSD) di URL yang ditentukan ke XmlSchemaSet. |
| Add(String, XmlReader) |
Menambahkan skema bahasa definisi Skema XML (XSD) yang terkandung dalam XmlReader ke XmlSchemaSet. |
| Add(XmlSchema) |
Menambahkan yang diberikan XmlSchema ke XmlSchemaSet. |
| Add(XmlSchemaSet) |
Menambahkan semua skema bahasa definisi Skema XML (XSD) dalam yang diberikan XmlSchemaSet ke XmlSchemaSet. |
| Compile() |
Mengkompilasi skema BAHASA definisi Skema XML (XSD) yang ditambahkan ke XmlSchemaSet dalam satu skema logis. |
| Contains(String) |
Menunjukkan apakah skema bahasa definisi Skema XML (XSD) dengan URI namespace target yang ditentukan berada di XmlSchemaSet. |
| Contains(XmlSchema) |
Menunjukkan apakah objek bahasa definisi Skema XML (XSD) XmlSchema yang ditentukan berada di XmlSchemaSet. |
| CopyTo(XmlSchema[], Int32) |
Menyalin semua XmlSchema objek dari ke array yang XmlSchemaSet diberikan, dimulai dari indeks yang diberikan. |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| Remove(XmlSchema) |
Menghapus skema bahasa definisi Skema XML (XSD) yang ditentukan dari XmlSchemaSet. |
| RemoveRecursive(XmlSchema) |
Menghapus skema bahasa definisi Skema XML (XSD) yang ditentukan dan semua skema yang diimpornya dari XmlSchemaSet. |
| Reprocess(XmlSchema) |
Memproses ulang skema bahasa definisi Skema XML (XSD) yang sudah ada di XmlSchemaSet. |
| Schemas() |
Mengembalikan kumpulan semua skema bahasa definisi Skema XML (XSD) di XmlSchemaSet. |
| Schemas(String) |
Mengembalikan kumpulan semua skema bahasa definisi Skema XML (XSD) di XmlSchemaSet dalam namespace layanan yang diberikan. |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Acara
| Nama | Deskripsi |
|---|---|
| ValidationEventHandler |
Menentukan penanganan aktivitas untuk menerima informasi tentang kesalahan validasi skema bahasa definisi Skema XML (XSD). |