IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] Probleme XML


Sujet :

Windows Forms

  1. #1
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut [C#] Probleme XML
    Bonsoir, j'ai une ptti soucis pour lire un fichier xml.
    Je fais comme ceci:
    J'appelle la methode lire de la classe Cxml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    ArrayList lListSMTP = new ArrayList();
    ListSMTP = XmlFile.Lire(ListSMTP);

    la classe CXml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    public class Cxml
    	{
    		private XmlDocument XmlDoc;
     
    		public Cxml()
    		{
    			XmlDoc = new XmlDocument();
    		}
     
    public ArrayList Lire(ArrayList list)
    		{
    			try
    			{
    				XmlDoc.Load("Options.xml");
     
    				for (int i = 0; i < XmlDoc.DocumentElement.ChildNodes.Count; i++)
    				{
    					CSrvSMTP srvsmtp = new CSrvSMTP();
     
    					for (int j = 0; i < XmlDoc.DocumentElement.ChildNodes[i].ChildNodes.Count; j++)
    					{
    						if(XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].LocalName == "Serveur")//ligne 70
    						{	srvsmtp.SrvName = XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].InnerText;
    							MessageBox.Show(srvsmtp.SrvName.ToString());
    						}
    						if(XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].LocalName == "Port")
    							srvsmtp.port = XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].InnerText;
     
    						list.Add(srvsmtp);
    					}
    				}
    				return list;
    			}
    			catch(System.Exception ex)
    			{
    				MessageBox.Show(ex.ToString());
    				return list;
    			}
    		}
    Mais ca me sort une exeption:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.NullReferenceExeption: La reference d'objet n'est pas définie à une instance d'un objet at MagicalSMTP .Cxml.Lire(ArrayList list) line 70.
    L'erreur est sur les if mais je vois pas ou.
    Merci

  2. #2
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    personne?

  3. #3
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    euh ça va résoudre ton pb mais c'est une solution alternative .

    Tu peux utiliser un dataset pour lire le fichier XML et après tu y accede comme si se sont des champs de base de données.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Essaye de remplacer ta boucle for par celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    for (int i = 0; i < XmlDoc.DocumentElement.ChildNodes.Count - 1; i++) 
                { 
                   CSrvSMTP srvsmtp = new CSrvSMTP(); 
     
                   for (int j = 0; i < XmlDoc.DocumentElement.ChildNodes[i].ChildNodes.Count; j++) 
                   { 
                      if(XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].LocalName == "Serveur")//ligne 70 
                      {   srvsmtp.SrvName = XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].InnerText; 
                         MessageBox.Show(srvsmtp.SrvName.ToString()); 
                      } 
                      if(XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].LocalName == "Port") 
                         srvsmtp.port = XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].InnerText; 
     
                      list.Add(srvsmtp); 
                   } 
                }
    et/ou celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    for (int i = 0; i < XmlDoc.DocumentElement.ChildNodes.Count - 1; i++) 
                { 
                   CSrvSMTP srvsmtp = new CSrvSMTP(); 
     
                   for (int j = 0; i < XmlDoc.DocumentElement.ChildNodes[i].ChildNodes.Count - 1; j++) 
                   { 
                      if(XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].LocalName == "Serveur")//ligne 70 
                      {   srvsmtp.SrvName = XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].InnerText; 
                         MessageBox.Show(srvsmtp.SrvName.ToString()); 
                      } 
                      if(XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].LocalName == "Port") 
                         srvsmtp.port = XmlDoc.DocumentElement.ChildNodes[i].ChildNodes[j].InnerText; 
     
                      list.Add(srvsmtp); 
                   } 
                }

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 83
    Par défaut
    salut,

    Dans ta deuxieme boucle "for", tu mélanges les "i" et les "j"

    for (int j = 0; i < XmlDoc.DocumentElement.ChildNodes[i].ChildNodes.Count; j++)

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Hum.. bien vu aussi: ca pourrait en effet être une cause possible de son pb

  7. #7
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    En effet bien vu c'etait ca. Defois je me dis que je suis un gros boulet.

    J'ai encire un chite question dans mon ArrayList je place des classes CSrvSMTP. Dans une autre partie du code je voudrais recuperer la valeur
    CSrvSMTP::SrvName et la placer dans une listView. Comment faire récupéré cette valeur dans le ArrayList?

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Essaye de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CSrvSMTP test = (CSrvSMTP)list[i];
    string s = test.Name;
    ou i est l'indice dans ton arraylist

  9. #9
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    Nikel ca marche !!! :-D
    Merci tonton Morpheus.

  10. #10
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    De rien fillot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. (REGLE)probleme xml en publication (mx 2004 pro)
    Par aries44 dans le forum Flash
    Réponses: 2
    Dernier message: 02/07/2007, 14h26
  2. [FLASH 8] Probleme xml et loadClip
    Par bluehige dans le forum Flash
    Réponses: 5
    Dernier message: 15/12/2006, 16h40
  3. Probleme XML::Parser
    Par cryptorchild dans le forum Modules
    Réponses: 6
    Dernier message: 18/03/2006, 11h40
  4. Probleme XML/XSL et utilisation d'ajax
    Par titou250 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/03/2006, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo