Analyse d'un fichier XML avec son schéma xsd

Analyse d'un fichier XML avec son schéma xsd - C#/.NET managed - Programmation

Marsh Posté le 05-10-2005 à 16:54:34    

Bonjour,
J'ai un fichier XML et son schéma xsd. Je voudrai lire ce fichier et vérifier qu'il respecte bien le schéma xsd. S'il ya une erreur dans le fichier, je voudrai CLAIREMENT afficher ce qui ne va pas. J'ai ce code là :
 

Code :
  1. ..........
  2.         //Ouverture d'un flux vers le fichier XML
  3.         FileStream fs = new FileStream(p_filename, FileMode.Open);
  4.         XmlReader reader = new XmlTextReader(fs);
  5.         //Création de l'analyseur XML
  6.         xmlValidatingReader = new XmlValidatingReader(reader);
  7.         xmlValidatingReader.ValidationType = ValidationType.Schema;
  8.         XmlSchemaCollection sc = new XmlSchemaCollection();
  9.         //Récupération du chemin où se trouve le schéma xsd
  10.         string schemaPath = Spir.Commun.Technical.Tools.SysUtils.GetConfigFile(p_schemaname);
  11.         sc.Add(null,schemaPath);
  12.         //Ajout d'un capteur d'évènement si il y a une erreur de validation
  13.         xmlValidatingReader.ValidationEventHandler += new System.Xml.Schema.ValidationEventHandler(ValidationErrorCallback);
  14.         //Ajout du schéma sur lequel on va valider le fichier XML
  15.         xmlValidatingReader.Schemas.Add(sc);
  16.         //Lecture du fichier
  17.         while (xmlValidatingReader.Read())
  18.         {
  19.         }
  20.         xmlValidatingReader.Close();
  21.         ........
  22.         private void ValidationErrorCallback(object sender, ValidationEventArgs args)
  23.         {
  24.              throw new ApplicationException("Cause : Format du fichier XML invalide - Erreur : " + args.Message);
  25.         }


 
Le problème ici, est que j'affiche "args.Message", mais je voudrai qu'un utilisateur lambda puisse comprendre le message. Par exemple afficher : "Erreur à la ligne 17 : L'élément MonElement n'est pas valide. Il ne respecte pas le schéma xsd". Un message du genre. Est-ce que c'est facilement réalisable? Ou je ne pourrai pas avoir mieux que le message d'erreur provenant de ValidationEventArgs?
 
Merci par avance de vos réponses.

Reply

Marsh Posté le 05-10-2005 à 16:54:34   

Reply

Marsh Posté le 08-10-2005 à 09:34:37    

avec SAX c'est possible...
Suffit de dériver de la classe DEFAULTHANDLER... Et de redéfinir les méthodes... (ça marche nikel en java)
Concernant xsd, jamais utilisé encore... mais regarde de ce coté la


Message édité par moi23372 le 08-10-2005 à 09:35:37
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed