XmlSchemaSet Classe

Definizione

Contiene una cache di schemi XSD (XML Schema Definition Language).Contains a cache of XML Schema definition language (XSD) schemas.

public ref class XmlSchemaSet
public class XmlSchemaSet
type XmlSchemaSet = class
Public Class XmlSchemaSet
Ereditarietà
XmlSchemaSet

Esempi

Nell'esempio seguente un file XML viene convalidato utilizzando gli schemi memorizzati in XmlSchemaSet.The following example validates an XML file using schemas stored in the XmlSchemaSet. Lo spazio dei nomi nel file XML, urn:bookstore-schema, consente di identificare gli schemi in XmlSchemaSet da utilizzare per la convalida.The namespace in the XML file, urn:bookstore-schema, identifies which schema in the XmlSchemaSet to use for validation. L'output dell'esempio mostra che il file XML presenta due violazioni dello schema:Output from the example shows that the XML file has two schema violations:

  • Il primo <libro > elemento contiene un <elemento autore > ma nessun <titolo > o <price >.The first <book> element contains an <author> element but no <title> or <price> element.

  • Nell' <elemento author > dell'ultimo <libro > manca un elemento First- <Name > e <Last-Name > e il nome non è valido <> elemento.The <author> element in the last <book> element is missing a <first-name> and <last-name> element and instead has an invalid <name> element.

#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::IO;

// Display any validation errors.
static void ValidationCallBack( Object^ /*sender*/, ValidationEventArgs^ e )
{
   Console::WriteLine( L"Validation Error:\n   {0}", e->Message );
   Console::WriteLine();
}

int main()
{
   // Create the XmlSchemaSet class.
   XmlSchemaSet^ sc = gcnew XmlSchemaSet;

   // Add the schema to the collection.
   sc->Add( L"urn:bookstore-schema", L"books.xsd" );

   // Set the validation settings.
   XmlReaderSettings^ settings = gcnew XmlReaderSettings;
   settings->ValidationType = ValidationType::Schema;
   settings->Schemas = sc;
   settings->ValidationEventHandler += gcnew ValidationEventHandler(ValidationCallBack);

   // Create the XmlReader object.
   XmlReader^ reader = XmlReader::Create( L"booksSchemaFail.xml", settings );

   // Parse the file. 
   while ( reader->Read() )
      ;

   return 1;
}
// 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'.
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'.

InputInput

Nell'esempio vengono utilizzati i seguenti due file di input:The sample uses the following two input files.

booksSchemaFail.xml: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: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>

Commenti

Importante

  • Non usare schemi da origini o percorsi sconosciuti o non attendibili.Do not use schemas from unknown or untrusted sources or locations. In questo modo si compromette la sicurezza del codice.Doing so will compromise the security of your code.
  • Gli schemi XML (inclusi gli schemi inline) sono intrinsecamente vulnerabili ad attacchi di tipo Denial of Service. non accettarli in scenari non attendibili.XML schemas (including inline schemas) are inherently vulnerable to denial of service attacks; do not accept them in untrusted scenarios.
  • I messaggi di errore e le eccezioni di convalida dello schema possono esporre informazioni riservate sul modello di contenuto o sui percorsi URI del file di schema.Schema validation error messages and exceptions may expose sensitive information about the content model or URI paths to the schema file. Prestare attenzione a non esporre queste informazioni a chiamanti non attendibili.Be careful not to expose this information to untrusted callers.
  • Ulteriori considerazioni sulla sicurezza sono descritte nella sezione "Considerazioni sulla sicurezza".Additional security considerations are covered in the "Security Considerations" section.

XmlSchemaSetè una cache o una libreria in cui è possibile archiviare gli schemi XSD (XML Schema Definition Language).XmlSchemaSet is a cache or library where you can store XML Schema definition language (XSD) schemas. XmlSchemaSet consente di migliorare le prestazioni grazie alla memorizzazione degli schemi nella cache. In tal modo non è più necessario accedere ad essi da un file o un URL.XmlSchemaSet improves performance by caching schemas in memory instead of accessing them from a file or a URL. Ogni schema viene identificato dall'URI dello spazio dei nomi e dal percorso specificato quando lo schema è stato aggiunto al set.Each schema is identified by the namespace URI and location that was specified when the schema was added to the set. Utilizzare la XmlReaderSettings.Schemas proprietà per assegnare l'oggetto XmlSchemaSet che deve essere utilizzato da un lettore XML per la convalida dei dati.You use the XmlReaderSettings.Schemas property to assign the XmlSchemaSet object an XML reader should use for data validation.

Considerazioni sulla sicurezzaSecurity Considerations

  • Non usare schemi da origini sconosciute o non attendibili.Do not use schemas from unknown or untrusted sources. In questo modo si compromette la sicurezza del codice.Doing so will compromise the security of your code. Gli spazi dei nomi o i percorsi esterni a cui viene fatto riferimento negli elementi di inclusione, importazione e ridefinizione di uno schema vengono risolti rispetto all'URI di base dello schema che li include o li importa.External namespaces or locations referenced in include, import, and redefine elements of a schema are resolved with respect to the base URI of the schema that includes or imports them. Se, ad esempio, l'URI di base dello schema di inclusione o di nullimportazione è vuoto o, i percorsi esterni vengono risolti rispetto alla directory corrente.For example, if the base URI of the including or importing schema is empty or null, the external locations are resolved with respect to the current directory. Per XmlUrlResolver impostazione predefinita, la classe viene utilizzata per risolvere gli schemi esterni.The XmlUrlResolver class is used to resolve external schemas by default. Per disabilitare la risoluzione degli elementi di inclusione, importazione e ridefinizione di uno schema XmlSchemaSet.XmlResolver , impostare nullla proprietà su.To disable resolution of include, import, and redefine elements of a schema, set the XmlSchemaSet.XmlResolver property to null.

  • La XmlSchemaSet classe usa la System.Text.RegularExpressions.Regex classe per analizzare e confrontare le espressioni regolari in un XML Schema.The XmlSchemaSet class uses the System.Text.RegularExpressions.Regex class to parse and match regular expressions in an XML schema. La convalida di facet basati su pattern con espressioni regolari in un XML Schema può comportare un maggiore utilizzo della CPU e deve essere evitata negli scenari di disponibilità elevata.Validation of pattern facets with regular expressions in an XML schema may involve increased CPU usage and should be avoided in high availability scenarios.

  • Eccezioni generate in seguito all'utilizzo della XmlSchemaSet classe, ad esempio la XmlSchemaException classe può contenere informazioni riservate che non devono essere esposte in scenari non attendibili.Exceptions raised as a result of using the XmlSchemaSet class, such as the XmlSchemaException class may contain sensitive information that should not be exposed in untrusted scenarios. Ad esempio, la SourceUri proprietà di un XmlSchemaException oggetto restituisce il percorso URI del file di schema che ha causato l'eccezione.For example, the SourceUri property of an XmlSchemaException returns the URI path to the schema file that caused the exception. La SourceUri proprietà non deve essere esposta in scenari non attendibili.The SourceUri property should not be exposed in untrusted scenarios. Le eccezioni devono essere gestite correttamente in modo che queste informazioni riservate non vengano esposte in scenari non attendibili.Exceptions should be properly handled so that this sensitive information is not exposed in untrusted scenarios.

Costruttori

XmlSchemaSet()

Inizializza una nuova istanza della classe XmlSchemaSet.Initializes a new instance of the XmlSchemaSet class.

XmlSchemaSet(XmlNameTable)

Inizializza una nuova istanza della classe XmlSchemaSet con l'oggetto XmlNameTable specificato.Initializes a new instance of the XmlSchemaSet class with the specified XmlNameTable.

Proprietà

CompilationSettings

Ottiene o imposta l'oggetto XmlSchemaCompilationSettings per XmlSchemaSet.Gets or sets the XmlSchemaCompilationSettings for the XmlSchemaSet.

Count

Ottiene il numero di schemi XSD (XML Schema Definition Language) logici nella classe XmlSchemaSet.Gets the number of logical XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalAttributes

Ottiene tutti gli attributi globali di tutti gli schemi XSD (XML Schema Definition Language) nella classe XmlSchemaSet.Gets all the global attributes in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalElements

Ottiene tutti gli elementi globali di tutti gli schemi XSD (XML Schema Definition Language) nella classe XmlSchemaSet.Gets all the global elements in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalTypes

Ottiene tutti i tipi globali, semplici e complessi, di tutti gli schemi XSD (XML Schema Definition Language) nella classe XmlSchemaSet.Gets all of the global simple and complex types in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

IsCompiled

Ottiene un valore che indica se gli schemi XSD (XML Schema Definition Language) nella classe XmlSchemaSet sono stati compilati.Gets a value that indicates whether the XML Schema definition language (XSD) schemas in the XmlSchemaSet have been compiled.

NameTable

Ottiene la classe XmlNameTable predefinita utilizzata dalla classe XmlSchemaSet per il caricamento di nuovi schemi XSD (XML Schema Definition Language).Gets the default XmlNameTable used by the XmlSchemaSet when loading new XML Schema definition language (XSD) schemas.

XmlResolver

Imposta l'oggetto XmlResolver utilizzato per risolvere gli spazi dei nomi o le posizioni di riferimento negli elementi di inclusione e importazione di uno schema.Sets the XmlResolver used to resolve namespaces or locations referenced in include and import elements of a schema.

Metodi

Add(String, String)

Aggiunge lo schema XSD (XML Schema Definition Language) che si trova all'URL specificato all'oggetto XmlSchemaSet.Adds the XML Schema definition language (XSD) schema at the URL specified to the XmlSchemaSet.

Add(String, XmlReader)

Aggiunge lo schema XSD (XML Schema Definition Language) contenuto nella classe XmlReader alla classe XmlSchemaSet.Adds the XML Schema definition language (XSD) schema contained in the XmlReader to the XmlSchemaSet.

Add(XmlSchema)

Aggiunge l'oggetto XmlSchema specificato alla classe XmlSchemaSet.Adds the given XmlSchema to the XmlSchemaSet.

Add(XmlSchemaSet)

Aggiunge tutti gli schemi XSD (XML Schema Definition Language) dell'oggetto XmlSchemaSet specificato alla classe XmlSchemaSet.Adds all the XML Schema definition language (XSD) schemas in the given XmlSchemaSet to the XmlSchemaSet.

Compile()

Compila gli schemi XSD (XML Schema Definition Language) aggiunti alla classe XmlSchemaSet in un unico schema logico.Compiles the XML Schema definition language (XSD) schemas added to the XmlSchemaSet into one logical schema.

Contains(String)

Indica se uno schema XSD (XML Schema Definition Language) con l'URI dello spazio dei nomi di destinazione specificato è contenuto nella classe XmlSchemaSet.Indicates whether an XML Schema definition language (XSD) schema with the specified target namespace URI is in the XmlSchemaSet.

Contains(XmlSchema)

Indica se l'oggetto XmlSchema XSD (XML Schema Definition Language) specificato è contenuto nella classe XmlSchemaSet.Indicates whether the specified XML Schema definition language (XSD) XmlSchema object is in the XmlSchemaSet.

CopyTo(XmlSchema[], Int32)

Copia tutti gli oggetti XmlSchema dalla classe XmlSchemaSet nella matrice specificata, a partire dall'indice specificato.Copies all the XmlSchema objects from the XmlSchemaSet to the given array, starting at the given index.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
Remove(XmlSchema)

Rimuove lo schema XSD (XML Schema Definition Language) specificato dalla classe XmlSchemaSet.Removes the specified XML Schema definition language (XSD) schema from the XmlSchemaSet.

RemoveRecursive(XmlSchema)

Rimuove lo schema XSD (XML Schema Definition Language) specificato e tutti gli schemi importati dalla classe XmlSchemaSet.Removes the specified XML Schema definition language (XSD) schema and all the schemas it imports from the XmlSchemaSet.

Reprocess(XmlSchema)

Rielabora uno schema XSD (XML Schema Definition Language) già presente nella classe XmlSchemaSet.Reprocesses an XML Schema definition language (XSD) schema that already exists in the XmlSchemaSet.

Schemas()

Restituisce un insieme di tutti gli schemi XSD (XML Schema Definition Language) nella classe XmlSchemaSet.Returns a collection of all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

Schemas(String)

Restituisce un insieme di tutti gli schemi XSD (XML Schema Definition Language) nella classe XmlSchemaSet appartenenti allo spazio dei nomi specificato.Returns a collection of all the XML Schema definition language (XSD) schemas in the XmlSchemaSet that belong to the given namespace.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Eventi

ValidationEventHandler

Specifica un gestore eventi per la ricezione di informazioni sugli errori di convalida di schemi XSD (XML Schema Definition Language).Specifies an event handler for receiving information about XML Schema definition language (XSD) schema validation errors.

Si applica a