[ASP][C#] Validation de fichier XML

Signaler
Messages postés
17
Date d'inscription
mercredi 20 mars 2013
Statut
Membre
Dernière intervention
20 mars 2013
-
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
Salut,

j'ai crée un Web service qui reçoit en paramètre un fichier XML. La première chose que je voudrais qu'il fasse, c'est de checker si ce fichier est valide d'après un schéma.

Pour l'instant j'ai une fonction qui "devrait" valider par rapport à un DTD, mais qui foire pas mal.

Je voulais savoir si qqun aurait une fonction qui tourne bien pour valider l'xml soit à partir d'un DTD, soit à partir d'un XSD.

je vous remercie d'avance

Voilà quand même mon bou de code qq peu foireux.

private void Page_Load(object sender, System.EventArgs e)
{
//------------------------------------------------------------------
//fonction testant si un document xml est valide selon un schema DTD
//------------------------------------------------------------------

XmlTextReader r = new XmlTextReader                          ("C:\\Temp\\test.xml");
XmlValidatingReader v = new XmlValidatingReader(r); 

v.ValidationType = ValidationType.DTD; 

int line = 0;

while (v.Read()&& isValid == true)
{
v.ValidationEventHandler += new ValidationEventHandler(MyValidationEventHandler); 

line = line + 1;
}

// Check whether the document is valid or invalid.
if (isValid)
TextBox1.Text = "Document is valid";
else
TextBox1.Text = "Document is invalid, error at line:" + line.ToString(); 

v.Close();
}

public static void MyValidationEventHandler(object sender, ValidationEventArgs args) 
{
isValid = false;
} 

3 réponses

Messages postés
17
Date d'inscription
mercredi 20 mars 2013
Statut
Membre
Dernière intervention
20 mars 2013

ouais, j'ai finalement trouvé. Si vous avez également le même souci que moi, allez voir sous:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlxmlvalidatingreaderclassvalidationtypetopic.asp
Messages postés
17
Date d'inscription
mercredi 20 mars 2013
Statut
Membre
Dernière intervention
20 mars 2013

La fonction marche bien, mais j'ai toujours un problème.

En fait ce que je fait c'est que j'enregistre un string XML dans un fichier, que j'ouvre ensuite pour le valider.

Lorsque je fais celà, il me marque l'erreur suivante:

Le fichier (filepath) ne peut pas être accéder, il est actuellement utilisé par un autre processus.

J'ai bien regardé et je ne sais pas ce qui foire. Pourtant après l'enregistrement de mon fichier, je le ferme (fichier.Close()).

Si qqun a déjà eu ce problème et qu'il peut me renseigner, ce serait sympa.
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
Si il te dit qu'il ais utiliser par un autre processus c'est quand t'as oublié de mettre v.Close(); et que tu essayes de le redemarrer une seconde fois donc c'est bizarre

v.Flush();

v.Close();

v.ValidationType = ValidationType.Auto;