Partilhar via


XmlDocument.Validate Método

Definição

Valida os XmlDocument esquemas XSD (Linguagem de Definição de Esquema XML) contidos na Schemas propriedade.

Sobrecargas

Nome Description
Validate(ValidationEventHandler)

Valida os XmlDocument esquemas XSD (Linguagem de Definição de Esquema XML) contidos na Schemas propriedade.

Validate(ValidationEventHandler, XmlNode)

Valida o XmlNode objeto especificado em relação aos esquemas XSD (Linguagem de Definição de Esquema XML) na Schemas propriedade.

Validate(ValidationEventHandler)

Origem:
XmlDocument.cs
Origem:
XmlDocument.cs
Origem:
XmlDocument.cs
Origem:
XmlDocument.cs
Origem:
XmlDocument.cs

Valida os XmlDocument esquemas XSD (Linguagem de Definição de Esquema XML) contidos na Schemas propriedade.

public:
 void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler);
public void Validate(System.Xml.Schema.ValidationEventHandler? validationEventHandler);
public void Validate(System.Xml.Schema.ValidationEventHandler validationEventHandler);
member this.Validate : System.Xml.Schema.ValidationEventHandler -> unit
Public Sub Validate (validationEventHandler As ValidationEventHandler)

Parâmetros

validationEventHandler
ValidationEventHandler

O ValidationEventHandler objeto que recebe informações sobre avisos e erros de validação de esquema.

Exceções

Ocorreu um evento de validação de esquema e nenhum ValidationEventHandler objeto foi especificado.

Exemplos

O exemplo a seguir ilustra o uso do Validate método. O exemplo cria um XmlDocument que contém um esquema XSD associado usando o e XmlReader os XmlReaderSettings objetos. Em seguida, o exemplo usa a XPathNavigator classe para modificar incorretamente o valor digitado de um elemento no documento XML que gera um erro de validação de esquema.

using System;
using System.Xml;
using System.Xml.Schema;
using System.Xml.XPath;

class XPathValidation
{
    static void Main()
    {
        try
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");
            settings.ValidationType = ValidationType.Schema;

            XmlReader reader = XmlReader.Create("contosoBooks.xml", settings);
            XmlDocument document = new XmlDocument();
            document.Load(reader);

            ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);

            // the following call to Validate succeeds.
            document.Validate(eventHandler);

            // add a node so that the document is no longer valid
            XPathNavigator navigator = document.CreateNavigator();
            navigator.MoveToFollowing("price", "http://www.contoso.com/books");
            XmlWriter writer = navigator.InsertAfter();
            writer.WriteStartElement("anotherNode", "http://www.contoso.com/books");
            writer.WriteEndElement();
            writer.Close();

            // the document will now fail to successfully validate
            document.Validate(eventHandler);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

    static void ValidationEventHandler(object sender, ValidationEventArgs e)
    {
        switch (e.Severity)
        {
            case XmlSeverityType.Error:
                Console.WriteLine("Error: {0}", e.Message);
                break;
            case XmlSeverityType.Warning:
                Console.WriteLine("Warning {0}", e.Message);
                break;
        }
    }
}
Imports System.Xml
Imports System.Xml.Schema
Imports System.Xml.XPath

Class XPathValidation

    Shared Sub Main()

        Try

            Dim settings As XmlReaderSettings = New XmlReaderSettings()
            settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd")
            settings.ValidationType = ValidationType.Schema

            Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings)
            Dim document As XmlDocument = New XmlDocument()
            document.Load(reader)

            Dim eventHandler As ValidationEventHandler = New ValidationEventHandler(AddressOf ValidationEventHandler)

            ' the following call to Validate succeeds.
            document.Validate(eventHandler)

            ' add a node so that the document is no longer valid
            Dim navigator As XPathNavigator = document.CreateNavigator()
            navigator.MoveToFollowing("price", "http://www.contoso.com/books")
            Dim writer As XmlWriter = navigator.InsertAfter()
            writer.WriteStartElement("anotherNode", "http://www.contoso.com/books")
            writer.WriteEndElement()
            writer.Close()

            ' the document will now fail to successfully validate
            document.Validate(eventHandler)

        Catch ex As Exception

            Console.WriteLine(ex.Message)

        End Try

    End Sub

    Shared Sub ValidationEventHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)

        Select Case e.Severity
            Case XmlSeverityType.Error
                Console.WriteLine("Error: {0}", e.Message)
            Case XmlSeverityType.Warning
                Console.WriteLine("Warning {0}", e.Message)
        End Select

    End Sub

End Class

O exemplo usa o arquivo e contosoBooks.xsd os contosoBooks.xml arquivos como entrada.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <book genre="autobiography" publicationdate="1981-03-22" 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-11-17" 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-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>
<?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:date" 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

O Validate método valida os dados XML nos XmlDocument esquemas contidos na Schemas propriedade. O Validate método executa o aumento do conjunto de informações. Especificamente, após a validação bem-sucedida, os padrões de esquema são aplicados, os valores de texto são convertidos em valores atômicos conforme necessário e as informações de tipo são associadas a itens de informações validados. O resultado é uma subárvore XML não tipada anteriormente na substituição XmlDocument por uma subárvore tipada.

Considere os seguintes pontos ao usar o Validate método:

  • Dicas de localização de esquema como xsi:schemaLocation ou xsi:noNamespaceSchemaLocation são ignoradas.
  • Esquemas embutidos são ignorados.
  • Se ocorrerem erros de validação de esquema durante a validação, eles XmlDocument serão parcialmente validados com alguns nós com informações de tipo corretas e alguns sem.
  • O processo de validação inclui a verificação de exclusividade e restrições de referência (xs:ID, , xs:IDREF, xs:keye xs:keyrefxs:unique).

Aplica-se a

Validate(ValidationEventHandler, XmlNode)

Origem:
XmlDocument.cs
Origem:
XmlDocument.cs
Origem:
XmlDocument.cs
Origem:
XmlDocument.cs
Origem:
XmlDocument.cs

Valida o XmlNode objeto especificado em relação aos esquemas XSD (Linguagem de Definição de Esquema XML) na Schemas propriedade.

public:
 void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler, System::Xml::XmlNode ^ nodeToValidate);
public void Validate(System.Xml.Schema.ValidationEventHandler? validationEventHandler, System.Xml.XmlNode nodeToValidate);
public void Validate(System.Xml.Schema.ValidationEventHandler validationEventHandler, System.Xml.XmlNode nodeToValidate);
member this.Validate : System.Xml.Schema.ValidationEventHandler * System.Xml.XmlNode -> unit
Public Sub Validate (validationEventHandler As ValidationEventHandler, nodeToValidate As XmlNode)

Parâmetros

validationEventHandler
ValidationEventHandler

O ValidationEventHandler objeto que recebe informações sobre avisos e erros de validação de esquema.

nodeToValidate
XmlNode

O XmlNode objeto criado a partir de um XmlDocument para validar.

Exceções

O XmlNode parâmetro de objeto não foi criado a partir de um XmlDocument.

O XmlNode parâmetro de objeto não é um elemento, atributo, fragmento de documento ou nó raiz.

Ocorreu um evento de validação de esquema e nenhum ValidationEventHandler objeto foi especificado.

Exemplos

Para obter um exemplo do Validate método, consulte o Validate método.

Comentários

O Validate método valida os dados XML no objeto em XmlNode relação aos esquemas contidos na Schemas propriedade. O Validate método executa o aumento do conjunto de informações. Especificamente, após a validação bem-sucedida, os padrões de esquema são aplicados, os valores de texto são convertidos em valores atômicos conforme necessário e as informações de tipo são associadas a itens de informações validados. O resultado é uma subárvore XML não tipada anteriormente na substituição XmlDocument por uma subárvore tipada.

Veja a seguir notas importantes a serem consideradas ao usar o Validate método.

  • Dicas de localização de esquema como xsi:schemaLocation ou xsi:noNamespaceSchemaLocation são ignoradas.

  • Esquemas embutidos são ignorados.

  • Se ocorrerem erros de validação de esquema durante a validação, eles XmlDocument serão parcialmente validados com alguns nós com informações de tipo corretas e alguns sem.

Se o nó a ser validado for o nó raiz, o processo de validação inclui a verificação de restrições de exclusividade e referência (xs:ID, , xs:IDREF, xs:keyxs:keyrefe xs:unique); caso contrário, restrições de exclusividade e referência serão omitidas.

Aplica-se a