XmlReaderSettings.Schemas Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft ab oder legt fest, die XmlSchemaSet beim Ausführen der Schemaüberprüfung zu verwenden.
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 XmlSchemaSet zu verwendende Vorgang beim Ausführen der Schemaüberprüfung. Der Standardwert ist ein leeres XmlSchemaSet Objekt.
Beispiele
Im folgenden Beispiel wird das XmlReaderSettings Objekt und die XmlReader.Create Methode verwendet, um einem XML-Dokument ein Schema zuzuordnen. Das Schema wird der Schemas Eigenschaft des XmlReaderSettings Objekts hinzugefügt. Der Wert der Schemas Eigenschaft ist ein XmlSchemaSet Objekt. Das Schema wird verwendet, um zu überprüfen, ob das XML-Dokument dem Schemainhaltsmodell entspricht. Schemaüberprüfungsfehler und Warnungen werden durch die ValidationEventHandler im XmlReaderSettings Objekt definierten behandelt.
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 books.xml Datei als Eingabe verwendet.
<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.
<?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
Dieser Artikel bezieht sich auf die Schemas Eigenschaft.
Important
- Verwenden Sie keine Schemas aus unbekannten oder nicht vertrauenswürdigen Quellen oder Speicherorten. Dadurch wird die Sicherheit Ihres Codes beeinträchtigt.
- XML-Schemas (einschließlich Inlineschemas) sind inhärent anfällig für Denial-of-Service-Angriffe; nehmen Sie sie in nicht vertrauenswürdigen Szenarien nicht an.
- Schemaüberprüfungsfehlermeldungen und Ausnahmen können vertrauliche Informationen über das Inhaltsmodell oder URI-Pfade für die Schemadatei verfügbar machen. Achten Sie darauf, diese Informationen nicht für nicht vertrauenswürdige Aufrufer verfügbar zu machen.
- Weitere Informationen finden Sie im Abschnitt "Sicherheitsaspekte".
Die XmlSchemaSet Klasse unterstützt nur XSD-Schemaschemas (XML Schema Definition Language). XmlReader Instanzen, die von der Create Methode erstellt wurden, können nicht so konfiguriert werden, dass XML-Data Reduzierte Schemaüberprüfung (XDR) aktiviert wird.
Sicherheitsüberlegungen
Verwenden Sie keine Schemas aus unbekannten oder nicht vertrauenswürdigen Quellen. Dadurch wird die Sicherheit Ihres Codes beeinträchtigt. Die XmlUrlResolver Klasse wird verwendet, um externe Schemas standardmäßig aufzulösen. Um die Auflösung von Einschließen-, Import- und Neudefinierungselementen eines Schemas zu deaktivieren, legen Sie die XmlSchemaSet.XmlResolver Eigenschaft auf
null.Ausnahmen, die aufgrund der Verwendung der XmlSchemaSet Klasse ausgelöst werden, z. B. die XmlSchemaException Klasse, enthalten möglicherweise vertrauliche Informationen, die in nicht vertrauenswürdigen Szenarien nicht verfügbar gemacht werden sollten. Beispielsweise gibt die SourceUri-Eigenschaft eines XmlSchemaException den URI-Pfad zur Schemadatei zurück, die die Ausnahme verursacht hat. Die SourceUri-Eigenschaft sollte in nicht vertrauenswürdigen Szenarien nicht verfügbar gemacht werden. Ausnahmen sollten ordnungsgemäß behandelt werden, damit diese vertraulichen Informationen in nicht vertrauenswürdigen Szenarien nicht verfügbar gemacht werden.