Bonjour,
J'aimerais récupérer les informations d'une bande contenu dans un fichier XML.
Voilà la forme de ce fichier:
Je voudrais donc récupérer les infos contenu dans la balise Bande0 mais en vérifiant leur nom car l'ordre peut changer. J'ai essayé avec un XmlNode mais je n'arrive à accèder au fils que par numéro d'index et non par nom.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <Parameters> <Bande0> <Name>C</Name> <Pos_X>33,3</Pos_X> <Delat_Pos_X>0,05</Delat_Pos_X> <Width>0,55</Width> <Delat_Width>0,05</Delat_Width> <Test_Band>True</Test_Band> <Threshold>13</Threshold> </Bande0> <Bande1> [...] </Parameters>
J'ai également essayé avec un XPathNavigator mais je bloque aussi sur la façon de récupérer les élément par leurs nom.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(@XMLFile); XmlNode Parameters = xmlDoc.DocumentElement; XmlNode Band0 = Parameters.SelectSingleNode("Bande0");
Je réussie avec ce code mais si cela est la seule solution je vois pas l'intérêt par rapport à un readstring.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 XPathNavigator nav = xmlDoc.CreateNavigator(); XPathNodeIterator iter = nav.Select("/Parameters/Bande0/*");
J'aimerais avoir un avi critique sur ma solution.
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 XmlNode Parameters = xmlDoc.DocumentElement; XmlNode Band0 = Parameters.SelectSingleNode("Bande0"); XmlNode Name = Band0.SelectSingleNode("Name"); XmlNode Pos_X = Band0.SelectSingleNode("Pos_X"); XmlNode Delat_Pos_X = Band0.SelectSingleNode("Delat_Pos_X"); XmlNode Width = Band0.SelectSingleNode("Width"); XmlNode Delat_Width = Band0.SelectSingleNode("Delat_Width"); XmlNode Test_Band = Band0.SelectSingleNode("Test_Band"); XmlNode Threshold = Band0.SelectSingleNode("Threshold"); string BdName = Name.InnerXml; double BdPos_X = Double.Parse(Pos_X.InnerXml); double BdDelat_Pos_X = Double.Parse(Delat_Pos_X.InnerXml); double BdWidth = Double.Parse(Width.InnerXml); double BdDelat_Width = Double.Parse(Delat_Width.InnerXml); bool BdTest_Band = bool.Parse(Test_Band.InnerXml); int BdThreshold = Int32.Parse(Threshold.InnerXml);
Merci.
Partager