XmlReaderSettings.Schemas Eigenschaft

Definition

Ruft das XmlSchemaSet ab, das beim Ausführen einer Schemavalidierung verwendet werden soll, oder legt dieses fest.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

Eigenschaftswert

Der zu verwendende XmlSchemaSet, wenn eine Schemavalidierung ausgeführt wird.The XmlSchemaSet to use when performing schema validation. Standardmäßig ist das XmlSchemaSet -Objekt leer.The default is an empty XmlSchemaSet object.

Beispiele

Im folgenden Beispiel werden das XmlReaderSettings -Objekt und XmlReader.Create die-Methode verwendet, um einem XML-Dokument ein Schema zuzuordnen.The example below uses the XmlReaderSettings object and the XmlReader.Create method to associate a schema with an XML document. Das Schema wird der Schemas -Eigenschaft XmlReaderSettings des-Objekts hinzugefügt.The schema is added to the Schemas property of the XmlReaderSettings object. Der Wert Schemas der Eigenschaft ist ein XmlSchemaSet Objekt.The value of the Schemas property is an XmlSchemaSet object. Das Schema wird verwendet, um zu überprüfen, ob das XML-Dokument dem Schema Inhalts Modell entspricht.The schema is used to validate that the XML document conforms to the schema content model. Schema Validierungs Fehler und-Warnungen werden von der ValidationEventHandler XmlReaderSettings im-Objekt definierten behandelt.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

Im Beispiel wird die Datei books. XML als Eingabe verwendet.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>

Im Beispiel wird die Datei books. xsd als Eingabe verwendet.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>

Hinweise

Wichtig

  • Verwenden Sie keine Schemas aus unbekannten oder nicht vertrauenswürdigen Quellen oder Speicherorten.Do not use schemas from unknown or untrusted sources or locations. Dadurch wird die Sicherheit Ihres Codes beeinträchtigt.Doing so will compromise the security of your code.
  • XML-Schemas (einschließlich Inline Schemas) sind von Natur aus anfällig für Denial-of-Service-Angriffe. akzeptieren Sie Sie nicht in nicht vertrauenswürdigen Szenarien.XML schemas (including inline schemas) are inherently vulnerable to denial of service attacks; do not accept them in untrusted scenarios.
  • Schema Validierungs Fehlermeldungen und-Ausnahmen können vertrauliche Informationen über das Inhalts Modell oder URI-Pfade zur Schema Datei verfügbar machen.Schema validation error messages and exceptions may expose sensitive information about the content model or URI paths to the schema file. Achten Sie darauf, diese Informationen nicht für nicht vertrauenswürdige Aufrufer verfügbar zu machen.Be careful not to expose this information to untrusted callers.
  • Weitere Informationen finden Sie im Abschnitt "Sicherheitsüberlegungen".For additional information, see the "Security considerations" section.

Die XmlSchemaSet -Klasse unterstützt nur XSD-Schemas (XML Schema Definition Language).The XmlSchemaSet class only supports XML Schema definition language (XSD) schemas. XmlReadervon der-Methode Create erstellte Instanzen können nicht so konfiguriert werden, dass die XDR-Schema Validierung (XML-Data Reduced) aktiviert wird.XmlReader instances created by the Create method cannot be configured to enable XML-Data Reduced (XDR) schema validation.

SicherheitsüberlegungenSecurity considerations

  • Verwenden Sie keine Schemas aus unbekannten oder nicht vertrauenswürdigen Quellen.Do not use schemas from unknown or untrusted sources. Dadurch wird die Sicherheit Ihres Codes beeinträchtigt.Doing so will compromise the security of your code. Die XmlUrlResolver -Klasse wird verwendet, um externe Schemas standardmäßig aufzulösen.The XmlUrlResolver class is used to resolve external schemas by default. Zum Deaktivieren der Auflösung von include-, Import-und neu definierenden Elementen eines Schemas legen nullSie die XmlSchemaSet.XmlResolver -Eigenschaft auf fest.To disable resolution of include, import, and redefine elements of a schema, set the XmlSchemaSet.XmlResolver property to null.

  • Ausnahmen, die aufgrund der Verwendung der XmlSchemaSet -Klasse ausgelöst werden, z. b. die XmlSchemaException -Klasse, können vertrauliche Informationen enthalten, die in nicht vertrauenswürdigen Szenarien nicht verfügbar gemacht werden sollen.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. Beispielsweise XmlSchemaException gibt die SourceUri -Eigenschaft eines den URI-Pfad zur Schema Datei zurück, die die Ausnahme verursacht hat.For example, the SourceUri property of an XmlSchemaException returns the URI path to the schema file that caused the exception. Die SourceUri -Eigenschaft sollte in nicht vertrauenswürdigen Szenarios nicht verfügbar gemacht werden.The SourceUri property should not be exposed in untrusted scenarios. Ausnahmen sollten ordnungsgemäß behandelt werden, damit diese vertraulichen Informationen in nicht vertrauenswürdigen Szenarios nicht verfügbar gemacht werden.Exceptions should be properly handled so that this sensitive information is not exposed in untrusted scenarios.

Gilt für:

Siehe auch