Lecture d'un fichier XML

Signaler
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
15 juin 2006
-
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
15 juin 2006
-
Bonjour,

J'ai un fichier XML qui se présente sous cette forme :

<GestionAbonnement>
  <Client NumCli="1" Nom="Dupond" Prenom="Jean-Claud" Rue="52 rue Gambetta" Code_postal="42000" Ville="Saint-Etienne" Telephone="0477561221" />
  <Client NumCli="2" Nom="Durand" Prenom="François" Rue="18 allée des pins" Code_postal="42152" Ville="L'Horme" Telephone="0477765616" />
  <Client NumCli="3" Nom="Martin" Prenom="Simone" Rue="12 avenue Charles de Gaulles" Code_postal="69000" Ville="Lyon" Telephone="0478955684" />
  <Client NumCli="4" Nom="Toto" Prenom="Jean" Rue="" Code_postal="42000" Ville="Saint-Etienne" Telephone="" />
  <Client NumCli="5" Nom="Dupond" Prenom="Jean" Rue="23 rue des essais bidons" Code_postal="42000" Ville="Saint-Etienne" Telephone="0477561221" />
  <Client NumCli="6" Nom="Durand" Prenom="François" Rue="128 rue des essais bidons" Code_postal="42152" Ville="L'Horme" Telephone="0477765616" />
  <Client NumCli="7" Nom="Martin" Prenom="Simone" Rue="10 rue des essais bidons" Code_postal="69000" Ville="Lyon" Telephone="0478955684" /> Telephone="4444444444" />
  <Magazine NumMag="1" Titre="Gameplay RPG" />
  <Magazine NumMag="2" Titre="PlayMag" />
  <Magazine NumMag="5" Titre="Console Max" />
 
 
 
</GestionAbonnement>

Lorsque j'essaie de lire mon fichier, j'ai une erreur à partir du second if(monfichierxml.LocalName= =quelque chose). Lorsque j'en ai qu'un ca fonctionne niquel.

Voici le code :

XmlTextReader fichierXml = new XmlTextReader(oFD.FileName);
                    fichierXml.WhitespaceHandling=WhitespaceHandling.None;
                    while (fichierXml.Read())
                    {
                        if (fichierXml.LocalName=="Client")
                        {
                            //on récupère chacun des attributs contenus dans les balises 'Client'
                            int num = Convert.ToInt32(fichierXml.GetAttribute("NumCli"));
                            string nom = fichierXml.GetAttribute("Nom");
                            string prenom = fichierXml.GetAttribute("Prenom");
                            string rue = fichierXml.GetAttribute("Rue");
                            string cp = fichierXml.GetAttribute("Code_postal");
                            string ville = fichierXml.GetAttribute("Ville");
                            string tel = fichierXml.GetAttribute("Telephone");

                            mesclients = new OleDbCommand();                       
                            mesclients = maCnx.CreateCommand();
                            mesclients.CommandText="SELECT idcli FROM client";
                            drclients=mesclients.ExecuteReader();
                            while(drclients.Read())
                            {
                                if(drclients.GetInt32(0)==num)
                                {
                                    numexistant=num;
                                }
                            }
                            drclients.Close();
                            mesclients.Dispose();

                            try
                            {
                                if(numexistant==num)
                                {
                                    maj = new OleDbCommand();
                                    maj = maCnx.CreateCommand();
                                    maj.CommandText="UPDATE client SET nom='"+nom+"',prenom='"+ prenom+"',rue='"+rue+"',codepostal='"+cp+"',ville='"+ville+"',tel='"+tel+"' WHERE idcli="+num;
                                    maj.ExecuteNonQuery();
                                    maj.Dispose();
                                }
                                else
                                {
                                    insertion = new OleDbCommand();
                                    insertion = maCnx.CreateCommand();
                                    insertion.CommandText = "INSERT INTO client VALUES ("+num+", '"+nom+"','"+prenom+"','"+rue+"','"+cp+"','"+ville+"','"+tel+"')";
                                    insertion.ExecuteNonQuery();
                                    insertion.Dispose();
                                }
                            }
                            catch (SqlException erreur)
                            {
                                MessageBox.Show(erreur.Message);
                            }
                            bool tp=fichierXml.MoveToNextAttribute();
                        }

                        if (fichierXml.LocalName=="Magazine")
                        {
                            //on récupère chacun des attributs contenus dans les balises 'Magazine'
                            int num = Convert.ToInt32(fichierXml.GetAttribute("NumMag"));
                            string titre = fichierXml.GetAttribute("Titre");

                            mesmag = new OleDbCommand();                       
                            mesmag = maCnx.CreateCommand();
                            mesmag.CommandText="SELECT idmag FROM magazine";
                            drmag=mesmag.ExecuteReader();
                            while(drmag.Read())
                            {
                                if(drmag.GetInt32(0)==num)
                                {
                                    numexistant=num;
                                }
                            }
                            drmag.Close();
                            mesmag.Dispose();

                            try
                            {
                                if(numexistant==num)
                                {
                                    maj = new OleDbCommand();
                                    maj = maCnx.CreateCommand();
                                    maj.CommandText="UPDATE magazine SET nommag='"+titre+"' WHERE idmag="+num;
                                    maj.ExecuteNonQuery();
                                    maj.Dispose();
                                }
                                else
                                {
                                    insertion = new OleDbCommand();
                                    insertion = maCnx.CreateCommand();
                                    insertion.CommandText = "INSERT INTO magazine VALUES ("+num+", '"+titre+"')";
                                    insertion.ExecuteNonQuery();
                                    insertion.Dispose();
                                }
                            }
                            catch (SqlException erreur)
                            {
                                MessageBox.Show(erreur.Message);
                            }
                            bool tp=fichierXml.MoveToNextAttribute();
                        }

Je n'ai pas le if pour l'abonnement vu que c'est le même principe que le reste.
Désolé pour la longueur du code : /
Si quelqu'un pouvait m'aider rapidement,ça serait super, la je suis en train de péter un cable

Merci d'avance

2 réponses

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
21
Vive les reqûetes XPATH.

C'est quoi le ptit nom de l'erreur ???

::|The S@ib|:: MVP C#.NET
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
15 juin 2006

Bon j'ai enfin trouvé l'erreur à la con que j'avais fait...
Tout simplement à cause d'une apostrophe : /
Enfin merci quand même d'avoir regardé mon cas ^^