XmlSchemaSet Klas

Definitie

Bevat een cache met XSD-schema's (XML Schema Definition Language).

public ref class XmlSchemaSet
public class XmlSchemaSet
type XmlSchemaSet = class
Public Class XmlSchemaSet
Overname
XmlSchemaSet

Voorbeelden

In het volgende voorbeeld wordt een XML-bestand gevalideerd met behulp van schema's die zijn opgeslagen in de XmlSchemaSet. De naamruimte in het XML-bestand, urn:bookstore-schema, bepaalt welk schema in het XmlSchemaSet wordt gebruikt voor validatie. Uitvoer uit het voorbeeld laat zien dat het XML-bestand twee schemaschendingen heeft:

  • Het eerste <book> element bevat een <author> element, maar geen <title> element of <price> element.

  • Het <author> element in het laatste <book> element ontbreekt en <first-name><last-name> bevat in plaats daarvan een ongeldig <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

In het voorbeeld worden de volgende twee invoerbestanden gebruikt.

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>

Opmerkingen

Important

  • Gebruik geen schema's van onbekende of niet-vertrouwde bronnen of locaties. Als u dit doet, wordt de beveiliging van uw code aangetast.
  • XML-schema's (inclusief inlineschema's) zijn inherent kwetsbaar voor Denial of Service-aanvallen; accepteer ze niet in niet-vertrouwde scenario's.
  • Foutberichten en uitzonderingen voor schemavalidatie kunnen gevoelige informatie over het inhoudsmodel of URI-paden naar het schemabestand beschikbaar maken. Wees voorzichtig met het niet beschikbaar maken van deze informatie aan niet-vertrouwde bellers.
  • Aanvullende beveiligingsoverwegingen worden behandeld in de sectie Beveiligingsoverwegingen.

XmlSchemaSet is een cache of bibliotheek waarin u XSD-schema's (XML Schema Definition Language) kunt opslaan. XmlSchemaSet verbetert de prestaties door schema's in het geheugen in cache op te slaan in plaats van ze te openen vanuit een bestand of een URL. Elk schema wordt geïdentificeerd door de naamruimte-URI en locatie die is opgegeven toen het schema aan de set werd toegevoegd. U gebruikt de XmlReaderSettings.Schemas eigenschap om het XmlSchemaSet object toe te wijzen dat een XML-lezer moet gebruiken voor gegevensvalidatie.

Beveiligingsoverwegingen

  • Gebruik geen schema's van onbekende of niet-vertrouwde bronnen. Als u dit doet, wordt de beveiliging van uw code aangetast. Externe naamruimten of locaties waarnaar wordt verwezen in opnemen, importeren en opnieuw definiëren van elementen van een schema, worden opgelost met betrekking tot de basis-URI van het schema dat deze bevat of importeert. Als de basis-URI van het opname- of importschema bijvoorbeeld leeg is of null, worden de externe locaties opgelost met betrekking tot de huidige map. De XmlUrlResolver klasse wordt standaard gebruikt om externe schema's op te lossen. Als u de oplossing van opnemen, importeren en opnieuw definiëren van elementen van een schema wilt uitschakelen, stelt u de XmlSchemaSet.XmlResolver eigenschap in op null.

  • De XmlSchemaSet klasse gebruikt de System.Text.RegularExpressions.Regex klasse om reguliere expressies in een XML-schema te parseren en te vergelijken. Validatie van patroon facets met reguliere expressies in een XML-schema kan leiden tot een verhoogd CPU-gebruik en moet worden vermeden in scenario's met hoge beschikbaarheid.

  • Uitzonderingen die worden gegenereerd als gevolg van het gebruik van de XmlSchemaSet klasse, zoals de XmlSchemaException klasse, kunnen gevoelige informatie bevatten die niet mag worden weergegeven in niet-vertrouwde scenario's. De SourceUri eigenschap van een XmlSchemaException object retourneert bijvoorbeeld het URI-pad naar het schemabestand dat de uitzondering heeft veroorzaakt. De SourceUri eigenschap mag niet worden weergegeven in niet-vertrouwde scenario's. Uitzonderingen moeten correct worden afgehandeld, zodat deze gevoelige informatie niet wordt weergegeven in niet-vertrouwde scenario's.

Constructors

Name Description
XmlSchemaSet()

Initialiseert een nieuw exemplaar van de XmlSchemaSet klasse.

XmlSchemaSet(XmlNameTable)

Initialiseert een nieuw exemplaar van de XmlSchemaSet klasse met de opgegeven XmlNameTable.

Eigenschappen

Name Description
CompilationSettings

Haalt of stelt de XmlSchemaCompilationSettings voor de XmlSchemaSet.

Count

Hiermee haalt u het aantal XSD-schema's (Logical XML Schema Definition Language) op in de XmlSchemaSet.

GlobalAttributes

Hiermee haalt u alle globale kenmerken op in alle XSD-schema's (XML Schema Definition Language) in de XmlSchemaSet.

GlobalElements

Hiermee haalt u alle globale elementen op in alle XSD-schema's (XML Schema Definition Language) in de XmlSchemaSet.

GlobalTypes

Haalt alle algemene eenvoudige en complexe typen op in alle XSD-schema's (XML Schema Definition Language) in de XmlSchemaSet.

IsCompiled

Hiermee wordt een waarde opgehaald die aangeeft of de XSD-schema's (XML Schema Definition Language) in de XmlSchemaSet schema's zijn gecompileerd.

NameTable

Hiermee wordt de standaardinstelling XmlNameTable opgehaald die wordt gebruikt bij het XmlSchemaSet laden van nieuwe XSD-schema's (XML Schema Definition Language).

XmlResolver

Hiermee stelt u de XmlResolver naamruimten of locaties waarnaar wordt verwezen in opnemen en importeren van elementen van een schema in.

Methoden

Name Description
Add(String, String)

Hiermee voegt u het XSD-schema (XML Schema Definition Language) toe aan de URL die is opgegeven aan de XmlSchemaSet.

Add(String, XmlReader)

Hiermee voegt u het XSD-schema (XML Schema Definition Language) toe dat is opgenomen in de XmlReaderXmlSchemaSet.

Add(XmlSchema)

Voegt de opgegeven XmlSchema toe aan de XmlSchemaSet.

Add(XmlSchemaSet)

Hiermee worden alle XSD-schema's (XML Schema Definition Language) toegevoegd aan de XmlSchemaSetopgegeven XmlSchemaSet schema's.

Compile()

Compileert de XSD-schema's (XML Schema Definition Language) die aan het XmlSchemaSet logische schema zijn toegevoegd.

Contains(String)

Geeft aan of een XSD-schema (XML Schema Definition Language) met de opgegeven doelnaamruimte-URI zich in de XmlSchemaSet.

Contains(XmlSchema)

Geeft aan of het opgegeven XSD-object (XML Schema Definition Language) XmlSchema zich in het XmlSchemaSetobject bevindt.

CopyTo(XmlSchema[], Int32)

Kopieert alle XmlSchema objecten van de XmlSchemaSet naar de opgegeven matrix, beginnend bij de opgegeven index.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Remove(XmlSchema)

Hiermee verwijdert u het opgegeven XSD-schema (XML Schema Definition Language) uit het XmlSchemaSet.

RemoveRecursive(XmlSchema)

Hiermee verwijdert u het opgegeven XSD-schema (XML Schema Definition Language) en alle schema's die worden geïmporteerd uit de XmlSchemaSet.

Reprocess(XmlSchema)

Hiermee wordt een XSD-schema (XML Schema Definition Language) opnieuw verwerkt dat al bestaat in het XmlSchemaSet.

Schemas()

Retourneert een verzameling van alle XSD-schema's (XML Schema Definition Language) in de XmlSchemaSet.

Schemas(String)

Retourneert een verzameling van alle XSD-schema's (XML Schema Definition Language) in de XmlSchemaSet opgegeven naamruimte.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

gebeurtenis

Name Description
ValidationEventHandler

Hiermee geeft u een gebeurtenis-handler voor het ontvangen van informatie over XSD-schemavalidatiefouten (XML Schema Definition Language).

Van toepassing op