Parcourir un fichier XML

Rapakooti Messages postés 92 Date d'inscription mercredi 4 décembre 2002 Statut Membre Dernière intervention 18 mai 2018 - 15 août 2012 à 01:43
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 27 août 2012 à 13:39
Bonjour,
je parcours un fichier XML, a l aide soit dit en passant d'un code provenant d'ici, et je replis des labels avec les info fournis ,j'ai deux questions, comment savoir le nom du noeud pour etres sur de remplir le bon lavel et deuxieme question comment arrondir un nombre contenu dans ces fichier xml
voici mon code
j'appel la fonction qui va lire le fichier

 string strFilename = infofichiernfo;
                FILE_NAME = infofichiernfo;
                if (File.Exists(strFilename))
                {
                    recupnfo();
                }
                else
                {
                    
                }


je recupere le nom du film dans un premier label
   private void recupnfo()
        {
            //LoadXml(FILE_NAME);
            doc = new XPathDocument(FILE_NAME);
            nav = doc.CreateNavigator();

            // Compile a standard XPath expression

            expr = nav.Compile("/movie/title");
            iterator = nav.Select(expr);

            // Iterate on the node set
           try
            {
                while (iterator.MoveNext())
                {
                    XPathNavigator nav2 = iterator.Current.Clone();
                    LtitreFilm2.Text=nav2.Value;
                   }
            }

je sais mon code est pas propre pour l'instant je tatonne seulement, tous peux etre fait plus rapidement


et lorsque mon label change je charge toutes les info ( pas propre du tout)

 private void LtitreFilm2_TextChanged(object sender, EventArgs e)
        {
            decimal note;
            string str = LtitreFilm2.Text;
            expr = nav.Compile("/movie[title='" + str + "']");
            //     MessageBox.Show("/movie[title='" + str + "']");
            iterator = nav.Select(expr);

            if (iterator.MoveNext())
            {
                XPathNavigator nav2 = iterator.Current.Clone();
                nav2.MoveToFirstChild();

                nav2.MoveToNext();
                LtitreFilmoriginal2.Text = nav2.Value;
                nav2.MoveToNext();
                lnote.Text = nav2.Value;
                note = Convert.ToDecimal(lnote.Text);
            //   note= Math.Round(note, 2);
               lnote2.Text = note.ToString(".##"); 


mais le souci est la , je ne gere pas la creation des xml donc il se peut qu'il y ai plus ou moi de noeud intermediaire,
et de deux je n'arrive pas a convertir le string en nombre a deux cecimal

merci

R A P A K O O T I

2 réponses

Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
27 août 2012 à 13:31
Bonjour

As-tu vérifié en debug que nav2.Value contient bien une valeur dans le code suivant :
lnote.Text = nav2.Value;
                note = Convert.ToDecimal(lnote.Text);
            //   note= Math.Round(note, 2);
               lnote2.Text = note.ToString(".##"); 
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 51
27 août 2012 à 13:39
Salut

Pour vérifier le nom, tu peux utiliser la propriété LocalName de ton objet nav2.

Et pour arrondir un nombre, tu as la méthode statique Math.Round().

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0