Salut, est ce que quelqu'un peut me dire comment est ce qu'on peut valider un fragment de fichier xml par rapport à un xml shéma??
Merci d'avance.
Salut, est ce que quelqu'un peut me dire comment est ce qu'on peut valider un fragment de fichier xml par rapport à un xml shéma??
Merci d'avance.
voilà j'ai trouvé le code suivant mais il ne fonctionne pas : on lui donne n'importe quel fragment et il l'accepte :
est ce que quelqu'un peut m'aider à résoudre e problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 public void xsdFragmentValidate(string xmlFrag) { XmlValidatingReader reader = null; XmlSchemaCollection myschema = new XmlSchemaCollection(); ValidationEventHandler eventHandler = new ValidationEventHandler(XSDFragmentValidationcs.ShowCompileErrors ); MainForm mf = (MainForm)(formMf); try { //Create the XmlParserContext. XmlParserContext context = new XmlParserContext(null, null, "", XmlSpace.None); //Implement the reader. reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context); OpenFileDialog dlgOpen = new OpenFileDialog(); if (dlgOpen.ShowDialog() == DialogResult.OK) { //Add the schema. myschema.Add("http://tempuri.org/XMLSchema.xsd",dlgOpen.FileName );//dlgOpen.FileName//"c:\\SchemaGenerique.xsd" } //Set the schema type and add the schema to the reader. reader.ValidationType = ValidationType.Schema; reader.Schemas.Add(myschema); while (reader.Read()) {} mf.console.AppendText("Completed validating xmlfragment\n"); } catch (XmlException XmlExp) { mf.console.AppendText(XmlExp.Message+"\n"); } catch(XmlSchemaException XmlSchExp) { mf.console.AppendText(XmlSchExp.Message+"\n"); } catch(Exception GenExp) { mf.console.AppendText(GenExp.Message+"\n"); } } public static void ShowCompileErrors(object sender, ValidationEventArgs args) { Console.WriteLine("Validation Error:"+ args.Message); }
bon il parait qie ma question est un peu difficile, mais bon j'ai trouvé le problème
en fait il faut bien gérer les namespace: si on utilise un namespace, on doit bien ajouter le namespace au fragment qu'on veux évaluer, sinon on corregie le code comme suit :
on remplace
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 //Add the schema. myschema.Add("http://tempuri.org/XMLSchema.xsd",dlgOpen.FileName);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 //Add the schema. myschema.Add(null,dlgOpen.FileName);étant le namespace."http://tempuri.org/XMLSchema.xsd"
Partager