XmlReaderSettings.Schemas Eigenschap

Definitie

Hiermee haalt u het te gebruiken op of stelt u deze in bij het XmlSchemaSet uitvoeren van schemavalidatie.

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

Waarde van eigenschap

De XmlSchemaSet te gebruiken bij het uitvoeren van schemavalidatie. De standaardwaarde is een leeg XmlSchemaSet object.

Voorbeelden

In het onderstaande voorbeeld worden het XmlReaderSettings object en de XmlReader.Create methode gebruikt om een schema te koppelen aan een XML-document. Het schema wordt toegevoegd aan de Schemas eigenschap van het XmlReaderSettings object. De waarde van de Schemas eigenschap is een XmlSchemaSet object. Het schema wordt gebruikt om te controleren of het XML-document voldoet aan het schema-inhoudsmodel. Schemavalidatiefouten en -waarschuwingen worden verwerkt door de ValidationEventHandler gedefinieerde in het XmlReaderSettings object.

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

In het voorbeeld wordt het books.xml-bestand als invoer gebruikt.

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

In het voorbeeld wordt het bestand books.xsd gebruikt als invoer.

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

Opmerkingen

Dit artikel heeft betrekking op de Schemas eigenschap.

Important

  • Gebruik geen schema's van onbekende of niet-vertrouwde bronnen of locaties. Hierdoor wordt de beveiliging van uw code aangetast.
  • XML-schema's (inclusief inlineschema's) zijn inherent kwetsbaar voor Denial of Service-aanvallen; accepteer ze niet in niet-vertrouwde scenario's.
  • Foutberichten en uitzonderingen voor schemavalidatie kunnen gevoelige informatie over het inhoudsmodel of URI-paden naar het schemabestand beschikbaar maken. Wees voorzichtig met het niet beschikbaar maken van deze informatie aan niet-vertrouwde bellers.
  • Zie de sectie Beveiligingsoverwegingen voor meer informatie.

De XmlSchemaSet klasse ondersteunt alleen XSD-schema's (XML Schema Definition Language). XmlReader exemplaren die door de Create methode zijn gemaakt, kunnen niet worden geconfigureerd om XML-Data gereduceerde schemavalidatie (XDR) in te schakelen.

Beveiligingsoverwegingen

  • Gebruik geen schema's van onbekende of niet-vertrouwde bronnen. Als u dit doet, wordt de beveiliging van uw code aangetast. De XmlUrlResolver klasse wordt standaard gebruikt om externe schema's op te lossen. Als u de oplossing van opnemen, importeren en opnieuw definiĆ«ren van elementen van een schema wilt uitschakelen, stelt u de XmlSchemaSet.XmlResolver eigenschap in op null.

  • Uitzonderingen die worden gegenereerd als gevolg van het gebruik van de XmlSchemaSet klasse, zoals de XmlSchemaException klasse, kunnen gevoelige informatie bevatten die niet mag worden weergegeven in niet-vertrouwde scenario's. De SourceUri eigenschap van een XmlSchemaException object retourneert bijvoorbeeld het URI-pad naar het schemabestand dat de uitzondering heeft veroorzaakt. De SourceUri eigenschap mag niet worden weergegeven in niet-vertrouwde scenario's. Uitzonderingen moeten correct worden afgehandeld, zodat deze gevoelige informatie niet wordt weergegeven in niet-vertrouwde scenario's.

Van toepassing op

Zie ook