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

Definizione

Ottiene o imposta l'oggetto XmlSchemaSet da usare quando si esegue la convalida dello schema.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

Valore della proprietà

Oggetto XmlSchemaSet da usare quando si esegue la convalida dello schema.The XmlSchemaSet to use when performing schema validation. L'impostazione predefinita è un oggetto XmlSchemaSet vuoto.The default is an empty XmlSchemaSet object.

Esempi

L'esempio seguente usa il XmlReaderSettings oggetto e il XmlReader.Create metodo per associare uno schema a un documento XML.The example below uses the XmlReaderSettings object and the XmlReader.Create method to associate a schema with an XML document. Lo schema viene aggiunto per il Schemas proprietà del XmlReaderSettings oggetto.The schema is added to the Schemas property of the XmlReaderSettings object. Il valore della Schemas proprietà è un XmlSchemaSet oggetto.The value of the Schemas property is an XmlSchemaSet object. Lo schema viene utilizzato per convalidare che il documento XML sia conforme al modello di contenuto dello schema.The schema is used to validate that the XML document conforms to the schema content model. Errori di convalida dello schema e gli avvisi vengono gestiti dal ValidationEventHandler definito nel XmlReaderSettings oggetto.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
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'esempio Usa il file books. XML come input.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'esempio Usa il file books. xsd come input.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>

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.
  • Per altre informazioni, vedere la sezione "Considerazioni sulla sicurezza".For additional information, see the "Security considerations" section.

Il XmlSchemaSet classe supporta solo schemi XML Schema definition language (XSD).The XmlSchemaSet class only supports XML Schema definition language (XSD) schemas. XmlReader le istanze create dal Create metodo non può essere configurato per abilitare la convalida dello schema XML-Data Reduced (XDR).XmlReader instances created by the Create method cannot be configured to enable XML-Data Reduced (XDR) schema 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. 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.

  • 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.

Si applica a

Vedi anche