XmlNode , XPathNodeIterator ou ReadString
Bonjour,
J'aimerais récupérer les informations d'une bande contenu dans un fichier XML.
Voilà la forme de ce fichier:
Code:
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:
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:
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:
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.