Bonjour,

J'aimerais récupérer les informations d'une bande contenu dans un fichier XML.
Voilà la forme de ce fichier:
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>
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
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@XMLFile);
XmlNode Parameters = xmlDoc.DocumentElement;
XmlNode Band0 = Parameters.SelectSingleNode("Bande0");
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
XPathNavigator nav = xmlDoc.CreateNavigator();
XPathNodeIterator iter = nav.Select("/Parameters/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
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);
J'aimerais avoir un avi critique sur ma solution.
Merci.