XmlSchemaSet Klasa

Definicja

Zawiera pamięć podręczną schematów języka definicji schematu XML (XSD).Contains a cache of XML Schema definition language (XSD) schemas.

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

Przykłady

Poniższy przykład sprawdza poprawność pliku XML przy użyciu schematów przechowywanych w XmlSchemaSet.The following example validates an XML file using schemas stored in the XmlSchemaSet. Przestrzeń nazw w pliku urn:bookstore-schemaXML, określa schemat XmlSchemaSet do użycia na potrzeby walidacji.The namespace in the XML file, urn:bookstore-schema, identifies which schema in the XmlSchemaSet to use for validation. Dane wyjściowe z przykładu pokazują, że plik XML ma dwa naruszenia schematu:Output from the example shows that the XML file has two schema violations:

  • Pierwszy <> element książki <zawiera element autor >, ale nie ma <tytułu > ani <elementu > cen.The first <book> element contains an <author> element but no <title> or <price> element.

  • < < <W elemencie <author > w ostatnim elemencie książki > brakuje elementu First-Name > i last-name >, a zamiast tego ma nieprawidłowy element > Name. <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'.

Dane wejścioweInput

W przykładzie są stosowane następujące dwa pliki wejściowe.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>

Uwagi

Ważne

  • Nie używaj schematów z nieznanych lub niezaufanych źródeł lub lokalizacji.Do not use schemas from unknown or untrusted sources or locations. Takie działanie spowoduje naruszenie zabezpieczeń kodu.Doing so will compromise the security of your code.
  • Schematy XML (w tym schematy wbudowane) są podatne na ataki typu "odmowa usługi"; nie Akceptuj ich w scenariuszach niezaufanych.XML schemas (including inline schemas) are inherently vulnerable to denial of service attacks; do not accept them in untrusted scenarios.
  • Komunikaty o błędach i wyjątki dotyczące sprawdzania poprawności schematu mogą ujawniać poufne informacje o modelu zawartości lub ścieżkach URI do pliku schematu.Schema validation error messages and exceptions may expose sensitive information about the content model or URI paths to the schema file. Należy zachować ostrożność, aby nie ujawniać tych informacji osobom niezaufanym wywołującym.Be careful not to expose this information to untrusted callers.
  • Dodatkowe zagadnienia dotyczące zabezpieczeń zostały omówione w sekcji "zagadnienia dotyczące zabezpieczeń".Additional security considerations are covered in the "Security Considerations" section.

XmlSchemaSetjest pamięcią podręczną lub biblioteką, w której można przechowywać schematy języka definicji schematu XML (XSD).XmlSchemaSet is a cache or library where you can store XML Schema definition language (XSD) schemas. XmlSchemaSetzwiększa wydajność przez buforowanie schematów w pamięci zamiast uzyskiwania do nich dostępu z pliku lub adresu URL.XmlSchemaSet improves performance by caching schemas in memory instead of accessing them from a file or a URL. Każdy schemat jest identyfikowany przez identyfikator URI przestrzeni nazw i lokalizację, która została określona podczas dodawania schematu do zestawu.Each schema is identified by the namespace URI and location that was specified when the schema was added to the set. XmlReaderSettings.Schemas Właściwość służy do XmlSchemaSet przypisywania obiektu, którego czytnik XML powinien używać do sprawdzania poprawności danych.You use the XmlReaderSettings.Schemas property to assign the XmlSchemaSet object an XML reader should use for data validation.

Zagadnienia dotyczące zabezpieczeńSecurity Considerations

  • Nie używaj schematów z nieznanych lub niezaufanych źródeł.Do not use schemas from unknown or untrusted sources. Takie działanie spowoduje naruszenie zabezpieczeń kodu.Doing so will compromise the security of your code. Zewnętrzne przestrzenie nazw lub lokalizacje, do których odwołują się elementy include, import i redefines schematu, są rozpoznawane w odniesieniu do podstawowego identyfikatora URI schematu, który zawiera lub importuje.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. Na przykład jeśli podstawowy identyfikator URI schematu dołączania lub importowania jest pusty lub nulllokalizacje zewnętrzne są rozwiązywane w odniesieniu do bieżącego katalogu.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. XmlUrlResolver Klasa jest używana do rozpoznawania schematów zewnętrznych domyślnie.The XmlUrlResolver class is used to resolve external schemas by default. Aby wyłączyć rozwiązanie dołączania, importowania i ponownego definiowania elementów schematu, należy ustawić XmlSchemaSet.XmlResolver właściwość na. nullTo disable resolution of include, import, and redefine elements of a schema, set the XmlSchemaSet.XmlResolver property to null.

  • XmlSchemaSet KlasaSystem.Text.RegularExpressions.Regex używa klasy do analizowania i dopasowywania wyrażeń regularnych w schemacie XML.The XmlSchemaSet class uses the System.Text.RegularExpressions.Regex class to parse and match regular expressions in an XML schema. Walidacja aspektów wzorca z wyrażeniami regularnymi w schemacie XML może powodować zwiększenie użycia procesora CPU i należy je unikać w scenariuszach wysokiej dostępności.Validation of pattern facets with regular expressions in an XML schema may involve increased CPU usage and should be avoided in high availability scenarios.

  • Wyjątki wywoływane w wyniku użycia XmlSchemaSet klasy, takie XmlSchemaException jak Klasa mogą zawierać poufne informacje, które nie powinny być ujawnione w scenariuszach niezaufanych.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. Na przykład SourceUri Właściwość XmlSchemaException zwraca ścieżkę URI do pliku schematu, który spowodował wyjątek.For example, the SourceUri property of an XmlSchemaException returns the URI path to the schema file that caused the exception. SourceUri Właściwość nie powinna być ujawniana w scenariuszach niezaufanych.The SourceUri property should not be exposed in untrusted scenarios. Wyjątki powinny być prawidłowo obsługiwane, aby te informacje poufne nie były ujawniane w scenariuszach niezaufanych.Exceptions should be properly handled so that this sensitive information is not exposed in untrusted scenarios.

Konstruktory

XmlSchemaSet()

Inicjuje nowe wystąpienie klasy XmlSchemaSet klasy.Initializes a new instance of the XmlSchemaSet class.

XmlSchemaSet(XmlNameTable)

Inicjuje nowe wystąpienie XmlSchemaSet klasy z określonym XmlNameTable.Initializes a new instance of the XmlSchemaSet class with the specified XmlNameTable.

Właściwości

CompilationSettings

Pobiera lub ustawia XmlSchemaCompilationSettings XmlSchemaSetdla elementu.Gets or sets the XmlSchemaCompilationSettings for the XmlSchemaSet.

Count

Pobiera liczbę schematów języka XSD (XML Schema Definition Language) w XmlSchemaSet.Gets the number of logical XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalAttributes

Pobiera wszystkie atrybuty globalne we wszystkich schematach języka definicji schematu XML (XSD) w XmlSchemaSet.Gets all the global attributes in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalElements

Pobiera wszystkie elementy globalne we wszystkich schematach języka definicji schematu XML (XSD) w XmlSchemaSet.Gets all the global elements in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

GlobalTypes

Pobiera wszystkie globalne proste i złożone typy we wszystkich schematach języka definicji schematu XML (XSD) w XmlSchemaSet.Gets all of the global simple and complex types in all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

IsCompiled

Pobiera wartość wskazującą, czy schematy języka definicji schematu XML (XSD) w programie XmlSchemaSet zostały skompilowane.Gets a value that indicates whether the XML Schema definition language (XSD) schemas in the XmlSchemaSet have been compiled.

NameTable

Pobiera wartość domyślną XmlNameTable używaną XmlSchemaSet podczas ładowania nowych schematów języka definicji schematu XML (XSD).Gets the default XmlNameTable used by the XmlSchemaSet when loading new XML Schema definition language (XSD) schemas.

XmlResolver

XmlResolver Ustawia używany do rozpoznawania przestrzeni nazw lub lokalizacji, do których odwołują się elementy include i import schematu.Sets the XmlResolver used to resolve namespaces or locations referenced in include and import elements of a schema.

Metody

Add(String, String)

Dodaje schemat języka definicji schematu XML (XSD) pod adresem URL określonym do XmlSchemaSet.Adds the XML Schema definition language (XSD) schema at the URL specified to the XmlSchemaSet.

Add(String, XmlReader)

Dodaje schemat języka definicji schematu XML (XSD) zawarty w tabeli XmlReader XmlSchemaSetdo.Adds the XML Schema definition language (XSD) schema contained in the XmlReader to the XmlSchemaSet.

Add(XmlSchema)

Dodaje daną XmlSchema wartość XmlSchemaSetdo.Adds the given XmlSchema to the XmlSchemaSet.

Add(XmlSchemaSet)

Dodaje wszystkie schematy języka definicji schematu XML (XSD) z danego XmlSchemaSet elementu XmlSchemaSetdo.Adds all the XML Schema definition language (XSD) schemas in the given XmlSchemaSet to the XmlSchemaSet.

Compile()

Kompiluje schematy języka definicji schematu XML (XSD) dodane do XmlSchemaSet jednego schematu logicznego.Compiles the XML Schema definition language (XSD) schemas added to the XmlSchemaSet into one logical schema.

Contains(String)

Wskazuje, XmlSchemaSetczy schemat języka definicji schematu XML (XSD) z określonym docelowym identyfikatorem URI przestrzeni nazw znajduje się w.Indicates whether an XML Schema definition language (XSD) schema with the specified target namespace URI is in the XmlSchemaSet.

Contains(XmlSchema)

Wskazuje, XmlSchema XmlSchemaSetczy określony obiekt języka definicji schematu XML (XSD) znajduje się w.Indicates whether the specified XML Schema definition language (XSD) XmlSchema object is in the XmlSchemaSet.

CopyTo(XmlSchema[], Int32)

Kopiuje wszystkie XmlSchema obiekty XmlSchemaSet z do danej tablicy, rozpoczynając od danego indeksu.Copies all the XmlSchema objects from the XmlSchemaSet to the given array, starting at the given index.

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Objectelementu.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
Remove(XmlSchema)

Usuwa określony schemat języka definicji schematu XML (XSD) z programu XmlSchemaSet.Removes the specified XML Schema definition language (XSD) schema from the XmlSchemaSet.

RemoveRecursive(XmlSchema)

Usuwa określony schemat języka definicji schematu XML (XSD) i wszystkie schematy importowane z programu XmlSchemaSet.Removes the specified XML Schema definition language (XSD) schema and all the schemas it imports from the XmlSchemaSet.

Reprocess(XmlSchema)

Przetwarza ponownie schemat języka definicji schematu XML (XSD), który już istnieje w XmlSchemaSet.Reprocesses an XML Schema definition language (XSD) schema that already exists in the XmlSchemaSet.

Schemas()

Zwraca kolekcję wszystkich schematów języka definicji schematu XML (XSD) w XmlSchemaSet.Returns a collection of all the XML Schema definition language (XSD) schemas in the XmlSchemaSet.

Schemas(String)

Zwraca kolekcję XmlSchemaSet zawierającą wszystkie schematy języka definicji schematu XML (XSD) należące do danego obszaru nazw.Returns a collection of all the XML Schema definition language (XSD) schemas in the XmlSchemaSet that belong to the given namespace.

ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Zdarzenia

ValidationEventHandler

Określa procedurę obsługi zdarzeń do uzyskiwania informacji o błędach walidacji schematu języka definicji schematu XML (XSD).Specifies an event handler for receiving information about XML Schema definition language (XSD) schema validation errors.

Dotyczy