XmlReaderSettings.Schemas Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta l'oggetto da utilizzare durante l'esecuzione XmlSchemaSet della convalida dello schema.
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
Valore della proprietà
Oggetto XmlSchemaSet da utilizzare durante l'esecuzione della convalida dello schema. Il valore predefinito è un oggetto vuoto XmlSchemaSet .
Esempio
L'esempio seguente usa l'oggetto XmlReaderSettings e il XmlReader.Create metodo per associare uno schema a un documento XML. Lo schema viene aggiunto alla Schemas proprietà dell'oggetto XmlReaderSettings . Il valore della Schemas proprietà è un XmlSchemaSet oggetto . Lo schema viene usato per verificare che il documento XML sia conforme al modello di contenuto dello schema. Gli errori e gli avvisi di convalida dello schema vengono gestiti dall'oggetto ValidationEventHandler definito nell'oggetto 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
Nell'esempio viene usato il file books.xml come input.
<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>
Nell'esempio viene usato il file books.xsd come input.
<?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>
Commenti
Questo articolo riguarda la Schemas proprietà .
Important
- Non usare schemi da origini o percorsi sconosciuti o non attendibili. In questo modo si compromette la sicurezza del codice.
- Gli XML Schema (inclusi gli schemi inline) sono intrinsecamente vulnerabili agli attacchi Denial of Service; non accettarli in scenari non attendibili.
- I messaggi di errore di convalida dello schema e le eccezioni possono esporre informazioni riservate sul modello di contenuto o i percorsi URI al file di schema. Prestare attenzione a non esporre queste informazioni ai chiamanti non attendibili.
- Per altre informazioni, vedere la sezione "Considerazioni sulla sicurezza".
La XmlSchemaSet classe supporta solo schemi XSD (XML Schema Definition Language). XmlReader Le istanze create dal Create metodo non possono essere configurate per abilitare la convalida dello schema XML-Data ridotta (XDR).
Considerazioni relative alla sicurezza
Non usare schemi da origini sconosciute o non attendibili. In questo modo verrà compromessa la sicurezza del codice. La XmlUrlResolver classe viene usata per risolvere gli schemi esterni per impostazione predefinita. Per disabilitare la risoluzione di elementi di inclusione, importazione e ridefinizione di uno schema, impostare la XmlSchemaSet.XmlResolver proprietà su
null.Le eccezioni generate in seguito all'uso della XmlSchemaSet classe , ad esempio la XmlSchemaException classe , possono contenere informazioni riservate che non devono essere esposte in scenari non attendibili. Ad esempio, la SourceUri proprietà di un XmlSchemaException oggetto restituisce il percorso dell'URI al file di schema che ha causato l'eccezione. La SourceUri proprietà non deve essere esposta in scenari non attendibili. Le eccezioni devono essere gestite correttamente in modo che queste informazioni riservate non vengano esposte in scenari non attendibili.