Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
XmlSchemaSet-Klasse
Enthält einen Cache von XSD-Schemas (XML-Schema Definition Language).
Assembly: System.Xml (in System.Xml.dll)
Der XmlSchemaSet-Typ macht die folgenden Member verfügbar.
| Name | Beschreibung | |
|---|---|---|
|
XmlSchemaSet() | Initialisiert eine neue Instanz der XmlSchemaSet-Klasse. |
|
XmlSchemaSet(XmlNameTable) | Initialisiert eine neue Instanz der XmlSchemaSet-Klasse mit dem angegebenen XmlNameTable. |
| Name | Beschreibung | |
|---|---|---|
|
CompilationSettings | Ruft das XmlSchemaCompilationSettings für das XmlSchemaSet ab oder legt dieses fest. |
|
Count | Ruft die Anzahl logischer XSD-Schemas (XML Schema Definition Language) im XmlSchemaSet ab. |
|
GlobalAttributes | Ruft alle globalen Attribute in allen XSD-Schemas (XML Schema Definition Language) im XmlSchemaSet ab. |
|
GlobalElements | Ruft alle globalen Elemente in allen XSD-Schemas (XML Schema Definition Language) im XmlSchemaSet ab. |
|
GlobalTypes | Ruft alle globalen einfachen und komplexen Typen in allen XSD-Schemas (XML Schema Definition Language) im XmlSchemaSet ab. |
|
IsCompiled | Gibt an, wenn die XSD-Schemas (XML Schema Definition Language) im XmlSchemaSet kompiliert wurden. |
|
NameTable | Ruft die Standard-XmlNameTable ab, die vom XmlSchemaSet beim Laden neuer XSD-Schemas (XML Schema Definition Language) verwendet wird. |
|
XmlResolver | Legt den XmlResolver fest, der verwendet wird, um Namespaces oder Speicherorte aufzulösen, auf die in Include- und Importelementen eines Schemas verwiesen wird. |
| Name | Beschreibung | |
|---|---|---|
|
Add(XmlSchema) | Fügt dem XmlSchemaSet das angegebene XmlSchema hinzu. |
|
Add(XmlSchemaSet) | Fügt dem XmlSchemaSet alle XSD-Schemas (XML Schema Definition Language) im vorhandenen XmlSchemaSet hinzu. |
|
Add(String, String) | Fügt das XSD-Schema (XML Schema Definition Language) bei der für den XmlSchemaSet angegebenen URL hinzu. |
|
Add(String, XmlReader) | Fügt das im XmlReader enthaltene XSD-Schema (XML Schema Definition Language) XmlSchemaSet hinzu. |
|
Compile | Kompiliert die dem XmlSchemaSet hinzugefügten XSD-Schemas (XML Schema Definition Language) in ein logisches Schema. |
|
Contains(String) | Gibt an, ob ein XSD-Schema (XML Schema Definition Language) mit dem angegebenen Zielnamespace-URI im XmlSchemaSet vorhanden ist. |
|
Contains(XmlSchema) | Gibt an, ob das angegebene XSD-Schema-(XML Schema Definition Language)-XmlSchema-Objekt im XmlSchemaSet vorhanden ist. |
|
CopyTo | Kopiert alle XmlSchema-Objekte aus dem XmlSchemaSet ab dem angegebenen Index in das angegebene Array. |
|
Equals(Object) | Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.) |
|
Finalize | Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der automatische Speicherbereinigung freigegeben wird. (Von Object geerbt.) |
|
GetHashCode | Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.) |
|
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) |
|
MemberwiseClone | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) |
|
Remove | Entfernt das angegebene XSD-Schema (XML Schema Definition Language) aus dem XmlSchemaSet. |
|
RemoveRecursive | Entfernt das angegebene XSD-Schema (XML Schema Definition Language) und alle Schemas, die aus dem XmlSchemaSet importiert werden. |
|
Reprocess | Verarbeitet erneut ein XSD-Schema (XML Schema Definition Language), das bereits im XmlSchemaSet vorhanden ist. |
|
Schemas() | Gibt im XmlSchemaSet eine Auflistung aller XSD-Schemas (XML Schema Definition Language) zurück. |
|
Schemas(String) | Gibt im XmlSchemaSet eine Auflistung aller XSD-Schemas (XML Schema Definition Language) zurück, die zum entsprechenden Namespace gehören. |
|
ToString | Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.) |
| Name | Beschreibung | |
|---|---|---|
|
ValidationEventHandler | Legt einen Ereignishandler fest, um Informationen über XSD-Schemavalidierungsfehler (XML Schema Definition Language) zu erhalten. |
In System.Xml, Version 1.0, wurden XML-Schemas in eine XmlSchemaCollection-Klasse als Schemabibliothek geladen. In System.Xml, Version 2.0, sind die XmlValidatingReader-Klasse und die XmlSchemaCollection-Klasse veraltet. Sie wurden durch die Create-Methode bzw. die XmlSchemaSet-Klasse ersetzt.
XmlSchemaSet wurde eingeführt, um eine Reihe von Problemen zu beheben, einschließlich der Kompatibilität von Standards, der Leistung und des veralteten Microsoft XDR-Schemaformats (XML-Data Reduced).
Nachfolgend wird ein Vergleich zwischen der XmlSchemaCollection-Klasse und der XmlSchemaSet-Klasse dargestellt.
|
XmlSchemaCollection |
XmlSchemaSet |
|---|---|
|
Unterstützt Microsoft XDR- und W3C-XML-Schemas. |
Unterstützt nur W3C-XML-Schemas. |
|
Schemas werden kompiliert, wenn die Add-Methode aufgerufen wird. |
Schemas werden nicht kompiliert, wenn die Add-Methode aufgerufen wird. Dadurch wird eine Leistungsverbesserung während der Erstellung der Schemabibliothek erreicht. |
|
Von jedem Schema wird eine einzelne kompilierte Version erstellt, was zu "Schemainseln" führen kann. Folglich werden alle Includes und Importe nur innerhalb dieses Schemas zugeordnet. |
Kompilierte Schemata erstellen ein einzelnes logisches Schema, eine "Gruppe" von Schemata. Alle importierten Schemata innerhalb eines Schemas, die der Gruppe hinzugefügt werden, werden der Gruppe selbst direkt hinzugefügt. Dies bedeutet, dass alle Typen für alle Schemas zur Verfügung stehen. |
|
Es kann nur ein Schema für einen bestimmten Zielnamespace in der Auflistung vorhanden sein. |
Es können mehrere Schemas für den gleichen Zielnamespace hinzugefügt werden, solange keine Typenkonflikte auftreten. |
Sicherheitsüberlegungen
-
Externe Namespaces oder Speicherorte, auf die in Elementen zum Einbinden, Importieren und Neudefinieren eines Schemas verwiesen wird, werden in Bezug auf den Basis-URI des Schemas aufgelöst, das sie einbindet oder importiert. Wenn beispielsweise der Basis-URI des Include- oder Importschemas leer oder null ist, werden die externen Speicherorte mit Bezug auf das aktuelle Verzeichnis aufgelöst. Die XmlUrlResolver-Klasse wird verwendet, um externe Schemas standardmäßig aufzulösen. Um die Auflösung von Elementen zum Einbinden, Importieren und Neudefinieren von Schemas zu deaktivieren, legen Sie die XmlResolver-Eigenschaft auf null fest.
-
Die XmlSchemaSet-Klasse verwendet die System.Text.RegularExpressions.Regex-Klasse, um reguläre Ausdrücke in einem XML-Schema zu analysieren und abzugleichen. Die Validierung von Muster-Facets mit regulären Ausdrücken in einem XML-Schema kann eine erhöhte CPU-Auslastung zur Folge haben und sollte in Szenarios mit hoher Verfügbarkeit vermieden werden.
-
Ausnahmen, die als Folge der Verwendung der XmlSchemaSet-Klasse ausgelöst werden, z. B. die XmlSchemaException-Klasse, können vertrauliche Informationen enthalten, die in nicht vertrauenswürdigen Szenarios nicht verfügbar gemacht werden sollten. Beispielsweise gibt die SourceUri-Eigenschaft einer XmlSchemaException den URI-Pfad der Schemadatei zurück, die die Ausnahme verursacht hat. Die SourceUri-Eigenschaft darf in nicht vertrauenswürdigen Szenarios nicht verfügbar gemacht werden. Ausnahmen sollten ordnungsgemäß behandelt werden, damit diese vertraulichen Informationen in nicht vertrauenswürdigen Szenarien nicht verfügbar gemacht werden.
Das nachfolgende Beispiel verwendet das XmlReaderSettings-Objekt und die XmlReader.Create-Methode, um einem XML-Dokument ein Schema zuzuordnen. Das Schema wird der Schemas-Eigenschaft des XmlReaderSettings-Objekts hinzugefügt. Der Wert der Schemas-Eigenschaft entspricht einem XmlSchemaSet-Objekt. Das Schema wird verwendet, um zu überprüfen, dass das XML-Dokument dem Schemainhaltsmodell entspricht. Schemavalidierungsfehler und -warnungen werden vom ValidationEventHandler behandelt, der im XmlReaderSettings-Objekt definiert wird.
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); } } }
Im Beispiel wird die Datei books.xml 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>
Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.