Partager via


XmlDocument.Validate Méthode

Définition

Valide l'élément XmlDocument par rapport aux schémas XSD contenus dans la propriété Schemas.

Surcharges

Validate(ValidationEventHandler)

Valide l'élément XmlDocument par rapport aux schémas XSD contenus dans la propriété Schemas.

Validate(ValidationEventHandler, XmlNode)

Valide l'objet XmlNode spécifié par rapport aux schémas XSD de la propriété Schemas.

Validate(ValidationEventHandler)

Valide l'élément XmlDocument par rapport aux schémas XSD contenus dans la propriété Schemas.

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)

Paramètres

validationEventHandler
ValidationEventHandler

Objet ValidationEventHandler qui reçoit des informations sur les erreurs et les avertissements de la validation des schémas.

Exceptions

Un événement de validation de schéma s’est produit et aucun objet ValidationEventHandler n’a été spécifié.

Exemples

L'exemple de code suivant illustre l'utilisation de la méthode Validate. L’exemple crée un XmlDocument schéma XSD associé à l’aide des objets et XmlReader des XmlReaderSettings objets. L’exemple utilise ensuite la XPathNavigator classe pour modifier incorrectement la valeur typée d’un élément dans le document XML générant une erreur de validation de schéma.

#using <System.Xml.dll>

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

class XPathValidation
{
public:

    static void Main()
    {
        try
        {
            XmlReaderSettings^ settings = gcnew XmlReaderSettings();
            settings->Schemas->Add("http://www.contoso.com/books", "contosoBooks.xsd");
            settings->ValidationType = ValidationType::Schema;

            XmlReader^ reader = XmlReader::Create("contosoBooks.xml", settings);
            XmlDocument^ document = gcnew XmlDocument();
            document->Load(reader);

            ValidationEventHandler^ eventHandler = gcnew ValidationEventHandler(ValidationEventHandlerOne);

            // 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 ValidationEventHandlerOne(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;
        }

    }
};

int main()
{
    XPathValidation::Main();
    Console::ReadLine();
    return 0;
};
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

L’exemple prend les fichiers et contosoBooks.xsd les contosoBooks.xml fichiers comme entrée.

<?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>

Remarques

La Validate méthode valide les données XML dans les XmlDocument schémas contenus dans la Schemas propriété. La Validate méthode effectue une augmentation de l’ensemble d’informations. Plus précisément, après la validation réussie, les valeurs de schéma sont appliquées, les valeurs de texte sont converties en valeurs atomiques si nécessaire, et les informations de type sont associées aux éléments d’informations validés. Le résultat est une sous-arborescence XML précédemment non typée dans l’arborescence XmlDocument remplacée par une sous-arborescence typée.

Voici des notes importantes à prendre en compte lors de l’utilisation de la Validate méthode.

  • Indicateurs d’emplacement de schéma comme xsi:schemaLocation ou xsi:noNamespaceSchemaLocation ignorés.

  • Les schémas inline sont ignorés.

  • Si des erreurs de validation de schéma se produisent pendant la validation, les XmlDocument nœuds sont partiellement validés avec des informations de type correctes et certaines sans.

  • Le processus de validation inclut la vérification de l’unicité et des contraintes de référence (xs:ID, xs:IDREF, xs:key, xs:keyrefet xs:unique).

S’applique à

Validate(ValidationEventHandler, XmlNode)

Valide l'objet XmlNode spécifié par rapport aux schémas XSD de la propriété Schemas.

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)

Paramètres

validationEventHandler
ValidationEventHandler

Objet ValidationEventHandler qui reçoit des informations sur les erreurs et les avertissements de la validation des schémas.

nodeToValidate
XmlNode

Objet XmlNode créé à partir de l'élément XmlDocument à valider.

Exceptions

Le paramètre de l’objet XmlNode n’a pas été créé à partir d’un XmlDocument.

Le paramètre de l’objet XmlNode n’est pas un élément, un attribut, un fragment de document ou le nœud racine.

Un événement de validation de schéma s’est produit et aucun objet ValidationEventHandler n’a été spécifié.

Exemples

Pour obtenir un exemple de Validate méthode, consultez la Validate méthode.

Remarques

La Validate méthode valide les données XML dans l’objet XmlNode par rapport aux schémas contenus dans la Schemas propriété. La Validate méthode effectue une augmentation de l’ensemble d’informations. Plus précisément, après la validation réussie, les valeurs de schéma sont appliquées, les valeurs de texte sont converties en valeurs atomiques si nécessaire, et les informations de type sont associées aux éléments d’informations validés. Le résultat est une sous-arborescence XML précédemment non typée dans l’arborescence XmlDocument remplacée par une sous-arborescence typée.

Voici des notes importantes à prendre en compte lors de l’utilisation de la Validate méthode.

  • Indicateurs d’emplacement de schéma comme xsi:schemaLocation ou xsi:noNamespaceSchemaLocation ignorés.

  • Les schémas inline sont ignorés.

  • Si des erreurs de validation de schéma se produisent pendant la validation, les XmlDocument nœuds sont partiellement validés avec des informations de type correctes et certaines sans.

Si le nœud à valider est le nœud racine, le processus de validation inclut la vérification de l’unicité et des contraintes de référence (xs:ID, xs:IDREF, , xs:keyetxs:keyref``xs:unique) ; sinon, les contraintes d’unicité et de référence sont omises.

S’applique à