XmlSchemaSet Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Innehåller en cache med XSD-scheman (XML Schema Definition Language).
public ref class XmlSchemaSet
public class XmlSchemaSet
type XmlSchemaSet = class
Public Class XmlSchemaSet
- Arv
-
XmlSchemaSet
Exempel
I följande exempel verifieras en XML-fil med hjälp av scheman XmlSchemaSetsom lagras i . Namnområdet i XML-filen , urn:bookstore-schemaidentifierar vilket schema som XmlSchemaSet ska användas för validering. Utdata från exemplet visar att XML-filen har två schemaöverträdelser:
Det första
<book>elementet innehåller ett<author>element men inget<title>eller<price>element.Elementet
<author>i det sista<book>elementet saknar ett<first-name>och-element<last-name>och har i stället ett ogiltigt<name>element.
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
Exemplet använder följande två indatafiler.
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>
Kommentarer
Important
- Använd inte scheman från okända eller ej betrodda källor eller platser. Om du gör det äventyras säkerheten för koden.
- XML-scheman (inklusive infogade scheman) är i sig sårbara för överbelastningsattacker. acceptera dem inte i ej betrodda scenarier.
- Felmeddelanden och undantag för schemavalidering kan exponera känslig information om innehållsmodellen eller URI-sökvägar till schemafilen. Var noga med att inte exponera den här informationen för ej betrodda uppringare.
- Ytterligare säkerhetsöverväganden beskrivs i avsnittet "Säkerhetsöverväganden".
XmlSchemaSet är en cache eller ett bibliotek där du kan lagra XSD-scheman (XML Schema Definition Language). XmlSchemaSet förbättrar prestanda genom att cachelagra scheman i minnet i stället för att komma åt dem från en fil eller en URL. Varje schema identifieras av den namnområdes-URI och plats som angavs när schemat lades till i uppsättningen. Du använder XmlReaderSettings.Schemas egenskapen för att tilldela det XmlSchemaSet objekt som en XML-läsare ska använda för dataverifiering.
Säkerhetsfrågor
Använd inte scheman från okända eller ej betrodda källor. Om du gör det äventyras säkerheten för koden. Externa namnrymder eller platser som refereras till i inkluderade, importerade och omdefinierade element i ett schema löses i förhållande till bas-URI:n för det schema som innehåller eller importerar dem. Om till exempel bas-URI:n för inkluderande eller importerande schema är tom eller
null, löses de externa platserna med hänsyn till den aktuella katalogen. Klassen XmlUrlResolver används för att matcha externa scheman som standard. Om du vill inaktivera upplösningen för inkludera, importera och omdefiniera element i XmlSchemaSet.XmlResolver ett schema anger du egenskapen tillnull.Klassen XmlSchemaSet använder System.Text.RegularExpressions.Regex klassen för att parsa och matcha reguljära uttryck i ett XML-schema. Validering av mönsterfasetter med reguljära uttryck i ett XML-schema kan innebära ökad CPU-användning och bör undvikas i scenarier med hög tillgänglighet.
Undantag som uppstår till följd av att klassen används XmlSchemaSet , till exempel XmlSchemaException klassen, kan innehålla känslig information som inte ska exponeras i obetrodda scenarier. Till exempel returnerar SourceUri-egenskapen hos en XmlSchemaException URI-sökvägen till schemafilen som orsakade undantaget. Egenskapen SourceUri ska inte exponeras i ej betrodda scenarier. Undantag bör hanteras korrekt så att den här känsliga informationen inte exponeras i obetrodda scenarier.
Konstruktorer
| Name | Description |
|---|---|
| XmlSchemaSet() |
Initierar en ny instans av XmlSchemaSet klassen. |
| XmlSchemaSet(XmlNameTable) |
Initierar en ny instans av XmlSchemaSet klassen med angiven XmlNameTable. |
Egenskaper
| Name | Description |
|---|---|
| CompilationSettings |
Hämtar eller anger XmlSchemaCompilationSettings för XmlSchemaSet. |
| Count |
Hämtar antalet XSD-schemascheman (logical XML Schema definition language) i XmlSchemaSet. |
| GlobalAttributes |
Hämtar alla globala attribut i alla XSD-scheman (XML Schema Definition Language) i XmlSchemaSet. |
| GlobalElements |
Hämtar alla globala element i alla XSD-scheman (XML Schema Definition Language) i XmlSchemaSet. |
| GlobalTypes |
Hämtar alla globala enkla och komplexa typer i alla XSD-scheman (XML Schema Definition Language) i XmlSchemaSet. |
| IsCompiled |
Hämtar ett värde som anger om XSD-scheman (XML Schema Definition Language) i XmlSchemaSet har kompilerats. |
| NameTable |
Hämtar standardvärdet XmlNameTable som används vid XmlSchemaSet inläsning av nya XSD-scheman (XML Schema Definition Language). |
| XmlResolver |
Anger vilka XmlResolver som används för att matcha namnområden eller platser som refereras i inkludera och importera element i ett schema. |
Metoder
| Name | Description |
|---|---|
| Add(String, String) |
Lägger till schemat för XML-schemadefinitionsspråk (XSD) vid den URL som anges i XmlSchemaSet. |
| Add(String, XmlReader) |
Lägger till schemat xml-schemadefinitionsspråk (XSD) som finns i XmlReader till XmlSchemaSet. |
| Add(XmlSchema) |
Lägger till den angivna XmlSchema i XmlSchemaSet. |
| Add(XmlSchemaSet) |
Lägger till alla XSD-scheman (XML Schema Definition Language) i angivet XmlSchemaSet till XmlSchemaSet. |
| Compile() |
Kompilerar scheman för XML-schemadefinitionsspråk (XSD) som lagts till i ett XmlSchemaSet logiskt schema. |
| Contains(String) |
Anger om ett XSD-schema (XML Schema Definition Language) med angiven målnamnområdes-URI finns i XmlSchemaSet. |
| Contains(XmlSchema) |
Anger om det angivna XSD-objektet (XML Schema Definition Language) XmlSchema finns i XmlSchemaSet. |
| CopyTo(XmlSchema[], Int32) |
Kopierar alla XmlSchema objekt från XmlSchemaSet till den angivna matrisen med början vid det angivna indexet. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| Remove(XmlSchema) |
Tar bort det angivna XSD-schemat (XML Schema Definition Language) från XmlSchemaSet. |
| RemoveRecursive(XmlSchema) |
Tar bort det angivna XSD-schemat (XML Schema Definition Language) och alla scheman som det importerar från XmlSchemaSet. |
| Reprocess(XmlSchema) |
Omarbetar ett XSD-schema (XML Schema Definition Language) som redan finns i XmlSchemaSet. |
| Schemas() |
Returnerar en samling med alla XSD-scheman (XML Schema Definition Language) i XmlSchemaSet. |
| Schemas(String) |
Returnerar en samling av alla XSD-scheman (XML Schema Definition Language) i XmlSchemaSet det som tillhör det angivna namnområdet. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
Händelser
| Name | Description |
|---|---|
| ValidationEventHandler |
Anger en händelsehanterare för att ta emot information om XSD-schemavalideringsfel (XML Schema Definition Language). |