Problème de lecture d'attributs xml dans un noeud

Résolu
skwalky Messages postés 3 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 21 janvier 2009 - 21 janv. 2009 à 10:41
skwalky Messages postés 3 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 21 janvier 2009 - 21 janv. 2009 à 12:57
Bonjour,

J'ai un fichier xml que voici, dont je n'arrive pas à lire le noeud Level1 (affiché en gras).
Je me casse la tête dessus depuis 2 heures sans comprendre ce qui ne va pas.
J'utilise SharpDevelopper, et le framework .Net 2.0

<?xml version= "1.0" encoding="utf-8"?>
<Game>
  <General>
    <Name>Steph test</Name>
    <Type>Texas Hold'em</Type>
    <Limit>Limite de pot</Limit>
    <Duration>4</Duration>
    5

    <LevelsCount>4</LevelsCount>
    <Chips>
      <Chip1>10</Chip1>
      <Chip2>25</Chip2>
      <Chip3>50</Chip3>
      <Chip4>100</Chip4>
      <Chip5>250</Chip5>
      <Chip6>500</Chip6>
    </Chips>

    <Levels>
      <Level1 Level="1" SmallBlind="10" BigBlind="20" Ante="0" Time="20" Break="0" />
      <Level2 Level ="2" SmallBlind="20" BigBlind="40" Ante="0" Time="20" Break="0" />
      <Level3 Level="3" SmallBlind="40" BigBlind="80" Ante="0" Time="20" Break="0" />
      <Level4 Level="4" SmallBlind="80" BigBlind="160" Ante="0" Time="20" Break="0" />
    </Levels>
  </General>
</Game>

Voilà ci-dessous la partie correspondante du code source. Je me place via une boucle sur chacun des noeuds puis j'en lit les attributs.
Mon problème est que quand i vaut 1 mon code lit les valeurs d'attributs du Level2 et je ne vois pas pourquoi (d'ailleurs normalement je devrais mettre i<=iLevelsCount comme limite de boucle mais le reader ne trouve pas de noeud Level4 et crashe).
// Levels
      reader.ReadStartElement("Levels");
                for (int i=1;i<iLevelsCount;i++)
                { 
                    // Go to start node Level i
                    reader.ReadStartElement(string.Concat("Level",i.ToString()));
                    // Read it's attributes
                    iLevelNumber=int.Parse(reader.GetAttribute("Level"));
                    iSmallBlind=int.Parse(reader.GetAttribute("SmallBlind"));
                    iBigBlind=int.Parse(reader.GetAttribute("BigBlind"));
                    iAnte=int.Parse(reader.GetAttribute("Ante"));
                    iTime=int.Parse(reader.GetAttribute("Time"));
                    iBreak=int.Parse(reader.GetAttribute("Break"));
                   
                    // Add the level on tournament
                    itsLevels.AddALevel(iLevelNumber, iSmallBlind, iBigBlind, iAnte, iTime, iBreak);
                }

Voilà je fais appel à un oeil extérieur, et à votre expérience pour m'aider

4 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
21 janv. 2009 à 11:09
Bonjour,

Pour ce faire, je te reviens vers un très bon tutorial de Bidou qui te permettra de résoudre facilement ton problème.
Cela ne devrait pas être compliqué une fois la lecture effectuée.

http://www.csharpfr.com/tutoriaux/XPATH-LANGUAGE_536.aspx

Bonne journée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
3
skwalky Messages postés 3 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 21 janvier 2009
21 janv. 2009 à 12:05
Merci Billou_13

J'ai fait simple sans xPathNavigator mais ca fonctionne, c'est l'essentiel.
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
21 janv. 2009 à 12:08
Re,

La solution "Standard" du tutorial montre aussi comment faire sans XPathNavigator avec XmlDocument.

Bonne journée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
skwalky Messages postés 3 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 21 janvier 2009
21 janv. 2009 à 12:57
Oui c'est ca, j'ai fait avec XmlDocument, et SelectSingleNode pour me placer au bon endroit
0
Rejoignez-nous