XmlReaderSettings.Schemas XmlReaderSettings.Schemas XmlReaderSettings.Schemas XmlReaderSettings.Schemas Property

Définition

Obtient ou définit le XmlSchemaSet à utiliser lors de la validation du schéma.Gets or sets the XmlSchemaSet to use when performing schema validation.

public:
 property System::Xml::Schema::XmlSchemaSet ^ Schemas { System::Xml::Schema::XmlSchemaSet ^ get(); void set(System::Xml::Schema::XmlSchemaSet ^ value); };
public System.Xml.Schema.XmlSchemaSet Schemas { get; set; }
member this.Schemas : System.Xml.Schema.XmlSchemaSet with get, set
Public Property Schemas As XmlSchemaSet

Valeur de propriété

XmlSchemaSet à utiliser lors de la validation de schéma.The XmlSchemaSet to use when performing schema validation. La valeur par défaut correspond à un objet XmlSchemaSet vide.The default is an empty XmlSchemaSet object.

Exemples

L’exemple ci-dessous XmlReaderSettings utilise l’objet XmlReader.Create et la méthode pour associer un schéma à un document XML.The example below uses the XmlReaderSettings object and the XmlReader.Create method to associate a schema with an XML document. Le schéma est ajouté à la Schemas propriété de l' XmlReaderSettings objet.The schema is added to the Schemas property of the XmlReaderSettings object. La valeur de la Schemas propriété est un XmlSchemaSet objet.The value of the Schemas property is an XmlSchemaSet object. Le schéma est utilisé pour valider le fait que le document XML est conforme au modèle de contenu de schéma.The schema is used to validate that the XML document conforms to the schema content model. Les erreurs et les avertissements de validation de schéma ValidationEventHandler sont gérés par XmlReaderSettings le défini dans l’objet.Schema validation errors and warnings are handled by the ValidationEventHandler defined in the XmlReaderSettings object.

#using <System.Xml.dll>

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

static void booksSettingsValidationEventHandler( Object^ /*sender*/, ValidationEventArgs^ e )
{
   if ( e->Severity == XmlSeverityType::Warning )
   {
      Console::Write( L"WARNING: " );
      Console::WriteLine( e->Message );
   }
   else
   if ( e->Severity == XmlSeverityType::Error )
   {
      Console::Write( L"ERROR: " );
      Console::WriteLine( e->Message );
   }
}

int main()
{
   XmlReaderSettings^ booksSettings = gcnew XmlReaderSettings;
   booksSettings->Schemas->Add( L"http://www.contoso.com/books", L"books.xsd" );
   booksSettings->ValidationType = ValidationType::Schema;
   booksSettings->ValidationEventHandler += gcnew ValidationEventHandler( booksSettingsValidationEventHandler );
   XmlReader^ books = XmlReader::Create( L"books.xml", booksSettings );
   while ( books->Read() )
   {}

   return 0;
}

using System;
using System.Xml;
using System.Xml.Schema;

class XmlSchemaSetExample
{
    static void Main()
    {
        XmlReaderSettings booksSettings = new XmlReaderSettings();
        booksSettings.Schemas.Add("http://www.contoso.com/books", "books.xsd");
        booksSettings.ValidationType = ValidationType.Schema;
        booksSettings.ValidationEventHandler += new ValidationEventHandler(booksSettingsValidationEventHandler);

        XmlReader books = XmlReader.Create("books.xml", booksSettings);

        while (books.Read()) { }
    }

    static void booksSettingsValidationEventHandler(object sender, ValidationEventArgs e)
    {
        if (e.Severity == XmlSeverityType.Warning)
        {
            Console.Write("WARNING: ");
            Console.WriteLine(e.Message);
        }
        else if (e.Severity == XmlSeverityType.Error)
        {
            Console.Write("ERROR: ");
            Console.WriteLine(e.Message);
        }
    }
}
Imports System.Xml
Imports System.Xml.Schema

Class XmlSchemaSetExample

    Shared Sub Main()

        Dim booksSettings As XmlReaderSettings = New XmlReaderSettings()
        booksSettings.Schemas.Add("http://www.contoso.com/books", "books.xsd")
        booksSettings.ValidationType = ValidationType.Schema
        AddHandler booksSettings.ValidationEventHandler, New ValidationEventHandler(AddressOf booksSettingsValidationEventHandler)

        Dim books As XmlReader = XmlReader.Create("books.xml", booksSettings)

        While books.Read()

        End While

    End Sub

    Shared Sub booksSettingsValidationEventHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)

        If e.Severity = XmlSeverityType.Warning Then
            Console.Write("WARNING: ")
            Console.WriteLine(e.Message)

        ElseIf e.Severity = XmlSeverityType.Error Then
            Console.Write("ERROR: ")
            Console.WriteLine(e.Message)
        End If

    End Sub

End Class

L’exemple utilise le fichier books. XML comme entrée.The example uses the books.xml file as input.

<bookstore xmlns="http://www.contoso.com/books">
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <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" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

L’exemple utilise le fichier books. xsd comme entrée.The example uses the books.xsd file as an input.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="bookstore">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="book">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" />
                            <xs:element name="author">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="name" type="xs:string" />
                                        <xs:element minOccurs="0" name="first-name" type="xs:string" />
                                        <xs:element minOccurs="0" name="last-name" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="price" type="xs:decimal" />
                        </xs:sequence>
                        <xs:attribute name="genre" type="xs:string" use="required" />
                        <xs:attribute name="publicationdate" type="xs:unsignedShort" use="required" />
                        <xs:attribute name="ISBN" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Remarques

Important

  • N’utilisez pas de schémas provenant de sources ou d’emplacements inconnus ou non approuvés.Do not use schemas from unknown or untrusted sources or locations. Cela compromettra la sécurité de votre code.Doing so will compromise the security of your code.
  • Les schémas XML (y compris les schémas inline) sont fondamentalement vulnérables aux attaques par déni de service. ne les acceptez pas dans les scénarios non fiables.XML schemas (including inline schemas) are inherently vulnerable to denial of service attacks; do not accept them in untrusted scenarios.
  • Les messages d’erreur de validation de schéma et les exceptions peuvent exposer des informations sensibles sur le modèle de contenu ou les chemins d’accès URI au fichier de schéma.Schema validation error messages and exceptions may expose sensitive information about the content model or URI paths to the schema file. Veillez à ne pas exposer ces informations à des appelants non fiables.Be careful not to expose this information to untrusted callers.
  • Pour plus d’informations, consultez la section «Considérations sur la sécurité».For additional information, see the "Security considerations" section.

La XmlSchemaSet classe ne prend en charge que les schémas de langage XSD (XML Schema Definition).The XmlSchemaSet class only supports XML Schema definition language (XSD) schemas. XmlReaderles instances créées par Create la méthode ne peuvent pas être configurées pour permettre la validation de schéma XDR (XML-Data Reduced).XmlReader instances created by the Create method cannot be configured to enable XML-Data Reduced (XDR) schema validation.

Considérations relatives à la sécuritéSecurity considerations

  • N’utilisez pas de schémas provenant de sources inconnues ou non approuvées.Do not use schemas from unknown or untrusted sources. Cela compromettra la sécurité de votre code.Doing so will compromise the security of your code. La XmlUrlResolver classe est utilisée pour résoudre les schémas externes par défaut.The XmlUrlResolver class is used to resolve external schemas by default. Pour désactiver la résolution des éléments include, import et Redefine d’un schéma, XmlSchemaSet.XmlResolver affectez nullà la propriété la valeur.To disable resolution of include, import, and redefine elements of a schema, set the XmlSchemaSet.XmlResolver property to null.

  • Les exceptions levées à la suite de XmlSchemaSet l’utilisation de la classe XmlSchemaException , telles que la classe, peuvent contenir des informations sensibles qui ne doivent pas être exposées dans des scénarios non fiables.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. Par exemple, la SourceUri propriété d’un XmlSchemaException retourne le chemin d’accès de l’URI au fichier de schéma qui a provoqué l’exception.For example, the SourceUri property of an XmlSchemaException returns the URI path to the schema file that caused the exception. La SourceUri propriété ne doit pas être exposée dans des scénarios non fiables.The SourceUri property should not be exposed in untrusted scenarios. Les exceptions doivent être correctement gérées afin que ces informations sensibles ne soient pas exposées dans des scénarios non fiables.Exceptions should be properly handled so that this sensitive information is not exposed in untrusted scenarios.

S’applique à

Voir aussi