Parcourir un fichier XML

Signaler
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
18 mai 2018
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
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

Messages postés
239
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
27 août 2012
5
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(".##"); 
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
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é. -