XML Schema Definition , XSD , est la norme la plus largement acceptée pour définir la structure des documents XML . Les schémas peuvent définir des restrictions , en option et des attributs requis dans un document XML. . Net permet la validation de XML à l'aide d'un ou plusieurs schémas avant de traiter le contenu . Validation XML réduit le traitement des exceptions du montant qui doit être effectuée dans le code et rattrape les erreurs dans la mise en forme des données qui pourraient autrement être négligé. Les choses dont vous aurez besoin
Visual Studio 2008 ou au-dessus
connaissances de niveau intermédiaire . Programmation Net
Show More Instructions
Validation XML utilisant XmlReaderSettings
1
Créer un nouveau projet C # du type désiré dans Visual studio. Si vous souhaitez ajouter une validation XML à un projet existant , vous pouvez sauter cette étape .
2
Ouvrez la boîte de dialogue " Add New Item" en cliquant sur " Project " puis en cliquant sur " Ajouter une classe . "
3
Indiquez un nom pour la nouvelle classe qui adhère à vos pratiques standards de codage et de nommage.
4
clic droit sur le projet dans l' Explorateur de solutions pour afficher le menu projet.
5
Sélectionnez " Ajouter une référence " dans le menu pour afficher la boîte de dialogue " Ajouter une référence " .
6
Sélectionnez System.XML dans la liste des composants, puis cliquez sur le bouton "Select" . Ensuite , cliquez sur " OK".
7
Ajoutez une méthode à la nouvelle classe utilisant le code suivant :
private bool ValidateDocument (chaîne xmlFile , chaîne xsdFile )
< p > {
XmlReaderSettings paramètres = new XmlReaderSettings { ValidationType
= lecteur = XmlReader.Create ( xmlFile , paramètres ) ;
essayer et
{
while ( reader.Read ());
return true ;
}
catch ( XmlSchemaValidationException ex)
{
//indique une erreur de validation s'est produite
Return of false; .
} }
Ce code charge XML dans un XmlReader et un schéma XML dans un XmlSchemaSet . Tous les attributs et les éléments du document XML sont validés lorsque le document est lu , il n'est pas nécessaire de visiter éléments individuellement . Si le document XML n'est pas valide un XmlSchemaValidationException est levée. L'exception comprend un message d'erreur , le numéro de la ligne et de la position où l'erreur s'est produite . . Traitement s'arrête sur la première erreur rencontrée
Si vous souhaitez traiter l'ensemble du document et de voir toutes les erreurs , pas seulement la première erreur , vous pouvez ajouter un gestionnaire d' erreur pour l'événement ValidationEventHandler utilisant le code suivant :
settings.ValidationEventHandler + = ValidationHandler ;
statique ValidationHandler void (object sender, ValidationEventArgs e)
{
/événement /process ici
}
validation XML à l'aide de LINQ
8
Créer un nouveau projet C # du type désiré dans Visual studio. Si vous souhaitez ajouter une validation XML à un projet existant , vous pouvez sauter cette étape .
9
Ouvrez la boîte de dialogue " Add New Item" en cliquant sur " Project " puis en cliquant sur " Ajouter une classe . "
10
Indiquez un nom pour la nouvelle classe qui adhère à vos pratiques standards de codage et de nommage.
11
clic droit sur le projet dans l' Explorateur de solutions pour afficher le projet menu.
12
Sélectionnez " Ajouter une référence " dans le menu pour afficher la boîte de dialogue " Ajouter une référence " .
13
Select System.XML et System.Linq de l' liste des composants, puis cliquez sur le bouton "Select" . Ensuite , cliquez sur " OK".
14
Ajoutez une méthode à la nouvelle classe utilisant le code suivant :
private bool ValidateDocument (chaîne xmlFile , chaîne xsdFile )
< p > {
//Créer le document XML à valider contre
XDocument xDoc = XDocument.Load ( xmlFile , LoadOptions.PreserveWhitespace ) .
XmlSchemaSet schéma = new XmlSchemaSet ( ) ;
bool isError = new bool (); //Par défaut à false
int countError = 1; /.. /Compte le nombre d'erreurs ont générés
//Ajouter le fichier de schéma que vous voulez valider contre
schema.Add (null, xsdFile ) .
//Appel de valider et utiliser une expression lambda comme méthode prolongée
< p > //n'aimez pas vous . NET 3.5 et LINQ ...
xDoc.Validate ( schéma, ( expéditeur , e) => Photos
{switch ( e.Severity )
{case XmlSeverityType.Error : Pause
;
cas XmlSeverityType.Warning : Pause
;
}
countError + +;
isError = true; //Si les feux d'erreur , le signaler à manipuler une fois l'appel terminé
}
, true); . //true indique à l' valider appellera pour le post- validation du schéma
//dont vous aurez besoin plus tard, si vous voulez plonger un Littel plus profond ...
retour isError ;
}
Ce code charge XML dans un XDocument et un schéma XML dans un XmlSchemaSet . Elle appelle ensuite la méthode de validation sur le XDocument aide d'une expression lambda comme ValidationEventHandler .