Partager via


XmlDocument.Validate Méthode

Définition

Valide les XmlDocument schémas XSD (XML Schema Definition Language) contenus dans la Schemas propriété.

Surcharges

Nom Description
Validate(ValidationEventHandler)

Valide les XmlDocument schémas XSD (XML Schema Definition Language) contenus dans la Schemas propriété.

Validate(ValidationEventHandler, XmlNode)

Valide l’objet XmlNode spécifié par rapport aux schémas XSD (XML Schema Definition Language) dans la Schemas propriété.

Validate(ValidationEventHandler)

Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs

Valide les XmlDocument schémas XSD (XML Schema Definition Language) contenus dans la Schemas propriété.

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 avertissements et erreurs de validation de schéma.

Exceptions

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

Exemples

L’exemple suivant illustre l’utilisation de la Validate méthode. 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;
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 l’augmentation de l’ensemble d’informations. Plus précisément, une fois la validation réussie, les valeurs de schéma par défaut sont appliquées, les valeurs de texte sont converties en valeurs atomiques si nécessaire, et les informations de type sont associées à des é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.

Tenez compte des points suivants lors de l’utilisation de la Validate méthode :

  • Indicateurs d’emplacement de schéma comme xsi:schemaLocation ou xsi:noNamespaceSchemaLocation sont ignorés.
  • Les schémas inline sont ignorés.
  • Si des erreurs de validation de schéma se produisent lors de la validation, elles XmlDocument sont partiellement validées avec certains nœuds 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:IDREFxs:key, xs:keyrefet xs:unique).

S’applique à

Validate(ValidationEventHandler, XmlNode)

Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs

Valide l’objet XmlNode spécifié par rapport aux schémas XSD (XML Schema Definition Language) dans la Schemas propriété.

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 avertissements et erreurs de validation de schéma.

nodeToValidate
XmlNode

Objet XmlNode créé à partir d’un XmlDocument à valider.

Exceptions

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

Le XmlNode paramètre d’objet 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 n’a ValidationEventHandler été spécifié.

Exemples

Pour obtenir un exemple de méthode Validate , 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 l’augmentation de l’ensemble d’informations. Plus précisément, une fois la validation réussie, les valeurs de schéma par défaut sont appliquées, les valeurs de texte sont converties en valeurs atomiques si nécessaire, et les informations de type sont associées à des é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.

Les remarques suivantes sont 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 sont ignorés.

  • Les schémas inline sont ignorés.

  • Si des erreurs de validation de schéma se produisent lors de la validation, elles XmlDocument sont partiellement validées avec certains nœuds 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:keyxs:keyrefet xs:unique) ; sinon, l’unicité et les contraintes de référence sont omises.

S’applique à