XmlDocument.Validate Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
ouxsi: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:keyref
etxs:unique
).
S’applique à
Validate(ValidationEventHandler, XmlNode)
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
ouxsi: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:key
etxs:keyref``xs:unique
) ; sinon, les contraintes d’unicité et de référence sont omises.