Bonjour,
J'ai un fichier xml sous cette forme la :
et je souhaiterais pourvoir afficher le contenu de celui-ci (compound, units et valeurs) dans un tableau et permettre par la suite l'ajout, la suppression et la modification des valeurs de ce fichiers, qui seront ensuite enregistrées. J'ai donc opté pour un datagridview.
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 <standard_set name="NIST Standards"> <standard name="NIST SRM 610"> <concentration compound="Li" units="ppm">484.6</concentration> <concentration compound="Be" units="ppm">465.6</concentration> <concentration compound="B" units="ppm">356.4</concentration> <concentration compound="C" units="ppm">0.1</concentration> <concentration compound="Na" units="ppm">99052.840104</concentration> <concentration compound="Mg" units="ppm">465.3</concentration> <concentration compound="Al" units="ppm">10791.413617</concentration> <concentration compound="Si" units="ppm">327090.72015</concentration> <concentration compound="P" units="ppm">342.5</concentration> .... </standard> <standard name="NIST SRM 610 (Pearce et al, 1997)"> <concentration compound="Li" units="ppm">482.20</concentration> <concentration compound="Be" units="ppm">460.70</concentration> <concentration compound="B" units="ppm">357.60</concentration> <concentration compound="Na" units="ppm">97190.21</concentration> <concentration compound="Mg" units="ppm">455.00</concentration> <concentration compound="Al" units="ppm">10053.47</concentration> ... </standard> <standard name="NIST SRM 612"> .....
Pour afficher dans le datagridview, j'ai ce code la qui fonctionne correctement et qui me permet d'afficher seulement certains noeuds :
Cependant cela me renvoie tout les noeuds du type demandé et je n'ai pas réussis à récupérer simplement les valeurs des noeuds enfants d'un noeud standard choisis.
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 private void XML() { XmlDataDocument xmlDatadoc = new XmlDataDocument(); xmlDatadoc.DataSet.ReadXml(file_Name); DataSet ds = new DataSet(); ds = xmlDatadoc.DataSet; dataGridView1.DataSource = ds; dataGridView1.DataMember = "standard"; }
Après recherches, je me suis donc tourné vers Xpath. Ceci m'as permis de récupérer le contenu des noeuds que je désirais ainsi que des noeuds enfants concernés.
En revanche, je n'arrive pas à trouver comment récupérer les valeurs des attributs "compound" et "units".
J'utilise ces expressions XPath pour parcourir mon fichier xml :
Mais en utilisant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // Expression pour parcourir le noeud donné ExpXPath = "//standard[@name='" + standard + "']"; // Expression pour récupérer le nombre de noeuds enfants contenu dans le noeud donné ExpXCount = "//standard[@name='" + standard + "']/concentration"; // Expression pour récupérer les valeurs de compound ExpXName = "//standard/concentration./@compound";cela me renvoie les valeurs de tout les noeuds enfants du noeud actuel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Name = Navigator_Name.Select(Navigator_Name.Compile(ExpXName)); Console.WriteLine(Name.Current.Value);
Si quelqu'un a une idée/solution, je suis preneur.
Merci d'avance.
Partager