XmlSchemaSet XmlSchemaSet XmlSchemaSet XmlSchemaSet Class

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à
XmlSchemaSetXmlSchemaSetXmlSchemaSetXmlSchemaSet

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. Output dell'esempio mostra che il file XML ha due le violazioni di schema:Output from the example shows that the XML file has two schema violations:

  • Il primo <book > elemento contiene un <author > elemento ma non <title > o <prezzo > elemento.The first <book> element contains an <author> element but no <title> or <price> element.

  • Il <autore > elemento negli ultimi <libro > elemento non è presente un <first-name > e <last-name > elemento e invece ha un valore non valido <nome > 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 gli schemi da origini sconosciute o non attendibile o percorsi.Do not use schemas from unknown or untrusted sources or locations. In questo modo può pregiudicare la sicurezza del codice.Doing so will compromise the security of your code.
  • Schemi XML (inclusi gli schemi inline) sono intrinsecamente vulnerabili ad attacchi denial of service; non le accetti in scenari non affidabili.XML schemas (including inline schemas) are inherently vulnerable to denial of service attacks; do not accept them in untrusted scenarios.
  • Le eccezioni e messaggi di errore di convalida dello schema possono esporre informazioni riservate riguardanti il modello di contenuto o i percorsi URI per il 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 per i chiamanti non attendibili.Be careful not to expose this information to untrusted callers.
  • Considerazioni aggiuntive 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 schemi XML Schema definition language (XSD).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 è identificato dallo spazio dei nomi URI e percorso che è stato 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. Si utilizza il XmlReaderSettings.Schemas proprietà da assegnare il XmlSchemaSet deve usare un lettore XML per la convalida dei dati dell'oggetto.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 gli schemi da origini sconosciute o non attendibili.Do not use schemas from unknown or untrusted sources. In questo modo può pregiudicare la sicurezza del codice.Doing so will compromise the security of your code. Spazi dei nomi esterni o percorsi a cui fa riferimento sono inclusi, importazione e ridefinizione di elementi di uno schema vengono risolte rispetto all'URI di base dello schema che li include o 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. Ad esempio, se l'URI di base dell'inclusione o importazione di schemi è vuota o null, i percorsi esterni vengono risolti in relazione 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. Il XmlUrlResolver classe viene utilizzata per la risoluzione degli schemi esterni per impostazione predefinita.The XmlUrlResolver class is used to resolve external schemas by default. Per disabilitare la risoluzione di inclusione, importazione e ridefinire gli elementi di uno schema, impostare il XmlSchemaSet.XmlResolver proprietà null.To disable resolution of include, import, and redefine elements of a schema, set the XmlSchemaSet.XmlResolver property to null.

  • Il XmlSchemaSet classe Usa il System.Text.RegularExpressions.Regex classe per analizzare e far corrispondere 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 degli aspetti dello schema con espressioni regolari in un XML schema può comportare un aumento dell'utilizzo della CPU e deve essere evitata negli scenari a 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.

  • Le eccezioni generate in seguito all'utilizzo di XmlSchemaSet classe, ad esempio il XmlSchemaException classe può contenere informazioni riservate che non devono essere esposte in scenari non affidabili.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, il SourceUri proprietà di un XmlSchemaException restituisce il percorso dell'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. Il SourceUri proprietà non deve essere esposte in scenari non affidabili.The SourceUri property should not be exposed in untrusted scenarios. Le eccezioni devono essere gestite correttamente in modo che queste informazioni riservate non viene esposto in scenari non affidabili.Exceptions should be properly handled so that this sensitive information is not exposed in untrusted scenarios.

Costruttori

XmlSchemaSet() XmlSchemaSet() XmlSchemaSet() XmlSchemaSet()

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

XmlSchemaSet(XmlNameTable) XmlSchemaSet(XmlNameTable) XmlSchemaSet(XmlNameTable) 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 CompilationSettings CompilationSettings CompilationSettings

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

Count Count Count 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 GlobalAttributes GlobalAttributes 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 GlobalElements GlobalElements 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 GlobalTypes GlobalTypes 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 IsCompiled IsCompiled 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 NameTable NameTable 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 XmlResolver XmlResolver 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) Add(String, String) Add(String, String) 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) Add(String, XmlReader) Add(String, XmlReader) 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) Add(XmlSchema) Add(XmlSchema) Add(XmlSchema)

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

Add(XmlSchemaSet) Add(XmlSchemaSet) Add(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() Compile() Compile() 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) Contains(String) Contains(String) 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) Contains(XmlSchema) Contains(XmlSchema) 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) CopyTo(XmlSchema[], Int32) CopyTo(XmlSchema[], Int32) 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) Equals(Object) Equals(Object) Equals(Object)

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

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

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

(Inherited from Object)
GetType() GetType() GetType() GetType()

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

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

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

(Inherited from Object)
Remove(XmlSchema) Remove(XmlSchema) Remove(XmlSchema) 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) RemoveRecursive(XmlSchema) RemoveRecursive(XmlSchema) 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) Reprocess(XmlSchema) Reprocess(XmlSchema) 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() Schemas() Schemas() 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) Schemas(String) Schemas(String) 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() ToString() ToString() ToString()

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

(Inherited from Object)

Eventi

ValidationEventHandler ValidationEventHandler ValidationEventHandler 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