XmlReaderSettings.Schemas Propriedade

Definição

Obtém ou define o XmlSchemaSet a ser usado ao executar a validação de esquema.Gets or sets the XmlSchemaSet to use when performing schema validation.

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

Valor da propriedade

XmlSchemaSet

O XmlSchemaSet a ser usado ao executar a validação de esquema.The XmlSchemaSet to use when performing schema validation. O padrão é um objeto XmlSchemaSet vazio.The default is an empty XmlSchemaSet object.

Exemplos

O exemplo a seguir usa o XmlReaderSettings objeto e o XmlReader.Create método para associar um esquema a um documento XML.The example below uses the XmlReaderSettings object and the XmlReader.Create method to associate a schema with an XML document. O esquema é adicionado à Schemas Propriedade do XmlReaderSettings objeto.The schema is added to the Schemas property of the XmlReaderSettings object. O valor da Schemas propriedade é um XmlSchemaSet objeto.The value of the Schemas property is an XmlSchemaSet object. O esquema é usado para validar que o documento XML está de acordo com o modelo de conteúdo do esquema.The schema is used to validate that the XML document conforms to the schema content model. Os erros e avisos de validação de esquema são tratados pelo ValidationEventHandler definido no XmlReaderSettings objeto.Schema validation errors and warnings are handled by the ValidationEventHandler defined in the XmlReaderSettings object.

#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;

static void booksSettingsValidationEventHandler( Object^ /*sender*/, ValidationEventArgs^ e )
{
   if ( e->Severity == XmlSeverityType::Warning )
   {
      Console::Write( L"WARNING: " );
      Console::WriteLine( e->Message );
   }
   else
   if ( e->Severity == XmlSeverityType::Error )
   {
      Console::Write( L"ERROR: " );
      Console::WriteLine( e->Message );
   }
}

int main()
{
   XmlReaderSettings^ booksSettings = gcnew XmlReaderSettings;
   booksSettings->Schemas->Add( L"http://www.contoso.com/books", L"books.xsd" );
   booksSettings->ValidationType = ValidationType::Schema;
   booksSettings->ValidationEventHandler += gcnew ValidationEventHandler( booksSettingsValidationEventHandler );
   XmlReader^ books = XmlReader::Create( L"books.xml", booksSettings );
   while ( books->Read() )
   {}

   return 0;
}

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

O exemplo usa o arquivo de books.xml como entrada.The example uses the books.xml file as 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>

O exemplo usa o arquivo books. xsd como uma entrada.The example uses the books.xsd file as an 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>

Comentários

Importante

  • Não use esquemas de fontes ou locais desconhecidos ou não confiáveis.Do not use schemas from unknown or untrusted sources or locations. Isso irá comprometer a segurança do seu código.Doing so will compromise the security of your code.
  • Esquemas XML (incluindo esquemas embutidos) são inerentemente vulneráveis a ataques de negação de serviço; Não os aceite em cenários não confiáveis.XML schemas (including inline schemas) are inherently vulnerable to denial of service attacks; do not accept them in untrusted scenarios.
  • Mensagens de erro de validação de esquema e exceções podem expor informações confidenciais sobre o modelo de conteúdo ou caminhos de URI para o arquivo de esquema.Schema validation error messages and exceptions may expose sensitive information about the content model or URI paths to the schema file. Tenha cuidado para não expor essas informações a chamadores não confiáveis.Be careful not to expose this information to untrusted callers.
  • Para obter informações adicionais, consulte a seção "considerações sobre segurança".For additional information, see the "Security considerations" section.

A XmlSchemaSet classe dá suporte apenas a esquemas XSD (linguagem de definição de esquema XML).The XmlSchemaSet class only supports XML Schema definition language (XSD) schemas. XmlReader instâncias criadas pelo Create método não podem ser configuradas para habilitar a validação de esquema de XML-Data reduzida (XDR).XmlReader instances created by the Create method cannot be configured to enable XML-Data Reduced (XDR) schema validation.

Considerações sobre segurançaSecurity considerations

  • Não use esquemas de fontes desconhecidas ou não confiáveis.Do not use schemas from unknown or untrusted sources. Isso irá comprometer a segurança do seu código.Doing so will compromise the security of your code. A XmlUrlResolver classe é usada para resolver esquemas externos por padrão.The XmlUrlResolver class is used to resolve external schemas by default. Para desabilitar a resolução dos elementos include, Import e redefine de um esquema, defina a XmlSchemaSet.XmlResolver propriedade como null .To disable resolution of include, import, and redefine elements of a schema, set the XmlSchemaSet.XmlResolver property to null.

  • As exceções geradas como resultado do uso da XmlSchemaSet classe, como a XmlSchemaException classe, podem conter informações confidenciais que não devem ser expostas em cenários não confiáveis.Exceptions raised as a result of using the XmlSchemaSet class, such as the XmlSchemaException class may contain sensitive information that should not be exposed in untrusted scenarios. Por exemplo, a SourceUri propriedade de um XmlSchemaException retorna o caminho do URI para o arquivo de esquema que causou a exceção.For example, the SourceUri property of an XmlSchemaException returns the URI path to the schema file that caused the exception. A SourceUri propriedade não deve ser exposta em cenários não confiáveis.The SourceUri property should not be exposed in untrusted scenarios. As exceções devem ser manipuladas adequadamente para que essas informações confidenciais não sejam expostas em cenários não confiáveis.Exceptions should be properly handled so that this sensitive information is not exposed in untrusted scenarios.

Aplica-se a

Confira também