XmlReaderSettings.Schemas Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví XmlSchemaSet použití při ověřování schématu.
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
Hodnota vlastnosti
Použití XmlSchemaSet při ověřování schématu. Výchozí hodnota je prázdný XmlSchemaSet objekt.
Příklady
Následující příklad používá XmlReaderSettings objekt a metodu XmlReader.Create k přidružení schématu k dokumentu XML. Schéma se přidá do Schemas vlastnosti objektu XmlReaderSettings . Hodnota Schemas vlastnosti je XmlSchemaSet objekt. Schéma slouží k ověření, že dokument XML odpovídá modelu obsahu schématu. Chyby a upozornění ověřování schématu ValidationEventHandler jsou zpracovávány definovanými v objektu XmlReaderSettings .
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
V příkladu se jako vstup používá soubor books.xml.
<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>
V příkladu se jako vstup používá soubor books.xsd.
<?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>
Poznámky
Tento článek se týká Schemas vlastnosti.
Important
- Nepoužívejte schémata z neznámých nebo nedůvěryhodných zdrojů nebo umístění. Tím ohrožujete zabezpečení vašeho kódu.
- Schémata XML (včetně vložených schémat) jsou ze své podstaty zranitelná vůči útokům na odepření služeb; nepřijímají je v nedůvěryhodných scénářích.
- Chybové zprávy a výjimky týkající se ověřování schématu mohou odhalit citlivé informace o modelu obsahu nebo cestách URI k souboru se schématem. Dávejte pozor, abyste tyto informace nezpřístupnil nedůvěryhodným volajícím.
- Další informace najdete v části Aspekty zabezpečení.
Třída XmlSchemaSet podporuje pouze schémata XSD (XML Schema Definition Language). XmlReader Instance vytvořené metodou Create nelze nakonfigurovat tak, aby povolovaly ověřování schématu XML-Data Omezené (XDR).
Bezpečnostní aspekty
Nepoužívejte schémata z neznámých nebo nedůvěryhodných zdrojů. Tím dojde k ohrožení zabezpečení vašeho kódu. Třída XmlUrlResolver se používá k řešení externích schémat ve výchozím režimu. Chcete-li zakázat rozlišení zahrnutí, importu a předefinování prvků schématu, nastavte vlastnost XmlSchemaSet.XmlResolver na hodnotu
null.Výjimky vyvolané použitím třídy XmlSchemaSet, jako je třída XmlSchemaException, mohou obsahovat citlivé informace, které by neměly být odhaleny v nedůvěryhodných scénářích. SourceUri Například vlastnost XmlSchemaException vrací cestu URI k souboru schématu, který způsobil výjimku. Vlastnost SourceUri by neměla být vystavena v nedůvěryhodných scénářích. Výjimky by se měly správně zpracovat, aby tyto citlivé informace nebyly zpřístupněny v nedůvěryhodných scénářích.