XmlReaderSettings.Schemas Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.