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

C# Discussion :

C# & xml : Recherche dans un fichier xml


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Par défaut C# & xml : Recherche dans un fichier xml
    Bonjour tout le monde.
    J'ai un projet de l'école que je suis entrain de réaliseravec c# mais j'ai un problème sur la recherche dans le fichier xml.
    mon code c# est le suivant:

    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
    41
    42
    static public ArrayList LoadComp(string path)
            {
                compte c = new compte();    
               ArrayList comp = new ArrayList();
                XmlDocument doc = new XmlDocument();
                doc.Load(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml");
                XmlNode xcomp = doc.FirstChild.SelectSingleNode("compte[@numcompte=" + (c.numcompte) + "]");
                //parcours des noeuds
                foreach (XmlNode com in xcomp)
                {
     
                    xcomp.Attributes["numcompte"].Value=Convert.ToString(c.Numcompte);
                    xcomp.Attributes["typecompte"].Value = c.Typecompte;
                    xcomp.Attributes["datecreation"].Value = c.datecreation.ToString();
                    xcomp.Attributes["solde"].Value = c.Solde.ToString();//récupère l'attribut Solde
                    if (c.GetType() == typeof(CompteCourant))
                    {
                        CompteCourant cc = (CompteCourant)c;
                    }
                    if (c.GetType() == typeof(CompteBloque))
                    {
                        CompteBloque cb = (CompteBloque)c;
                        xcomp.Attributes["frequence"].Value = cb.Frequence;
                        xcomp.Attributes["duree"].Value = cb.Duree;
                    }
                    if (c.GetType() == typeof(CompteEpargne))
                    {
                        CompteEpargne ce = (CompteEpargne)c;
                        xcomp.Attributes["frequence"].Value = ce.Frequence;
                    }
                    if (c.GetType() == typeof(CompteDecouvert))
                    {
                        CompteDecouvert cd = (CompteDecouvert)c;
                        xcomp.Attributes["decouvert"].Value = cd.Decouvert.ToString();
                    }
     
                    comp.Add(xcomp);//ajout dans la liste
     
                }
                return comp;
     
            }
    et celui qui est derrière le bouton rechercher d'un formulaire c# qui doit intéragir avec le fichier xml est le suivant:
    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
    private void BtnRechercher_Click(object sender, EventArgs e)
            {
                xmlFileUtil p = new xmlFileUtil();
                if (CmbRecherche.Text == ("Numéro de compte"))
                {
                    compte c = new compte();
                    xmlFileUtil.LoadComp(TxtRecherche.Text);
     
                   // p.ModifierCompte(TxtRecherche.Text);
     
                    //if (client.pasSucces == false)
                    //{
                        TxtNumCompte.Text = Convert.ToString(c.Numcompte);
                        CmbTypeCompte.Text = c.typecompte;
                       DtpDateCreation.Text = Convert.ToString(c.Datecreation.ToLongDateString());
                        TxtSolde.Text = Convert.ToString(c.Solde);
                        if(c.GetType()==typeof(CompteEpargne))
                        {
                            CompteEpargne ce=(CompteEpargne)c;
                            CmbFrequence.Text=ce.Frequence;
                        }
                        if(c.GetType()==typeof(CompteBloque))
                            {
                             CompteBloque cb=(CompteBloque)c;
     
                             CmbFrequence.Text=cb.Frequence;
                            CmbDuree.Text=cb.Duree;
                            }
                        if(c.GetType()==typeof(CompteDecouvert))
                        {
                            CompteDecouvert cd=(CompteDecouvert)c;
                            CmbDuree.Text=Convert.ToString(cd.Decouvert);
                        }
    Si quelqu'un peu me donner un coût de main, ça serait gentil.
    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Par défaut
    J'ai oublié de mettre le code que j'ai utilisé pour créer le fichier xml. Je le met ici en bas pour que celui qui veux bien m'aide comprenne bien. C'est projet de gestion bancaire au fait .
    Merci:

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;
    using System.Xml;
    using System.IO;
    using Model;
     
     
    namespace Model
    {
       public class xmlCompte
        {
     
            #region"fichier xml pur l'Entreprise"
            public void AddCompte(CompteCourant c)
            {
                XmlDocument doc = new XmlDocument();//Création d'un objet document xml qui permet de représenter un fichier xml
                if (!File.Exists(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml"))
                {
                    //création d'un noeud xml
                    XmlElement root = doc.CreateElement("Comptes");//<Comptes></Comptes>
                    doc.AppendChild(root);
                }
                else
                {
                    doc.Load(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml");//changement du flux xml
                }
                //création du noeud compte
                XmlElement comp = doc.CreateElement("Compte");
                XmlAttribute numcompte = doc.CreateAttribute("numcompte");
                numcompte.Value = c.Numcompte.ToString();
                comp.Attributes.Append(numcompte);
                //comp.InnerText = c.Numcompte.ToString();
                //création de l'attribut ninea
                XmlAttribute typecompte = doc.CreateAttribute("typecompte");
                typecompte.Value = c.Typecompte;
                //ajout de l'attribut ninea dans le noeud compte
                comp.Attributes.Append(typecompte);
                //création de l'attribut ninea
                XmlAttribute datecreation = doc.CreateAttribute("datecreation");
                datecreation.Value = c.Datecreation.ToLongDateString() + " " + DateTime.Now.TimeOfDay;
                //ajout de l'attribut ninea dans le noeud compte
                comp.Attributes.Append(datecreation);
                //création de l'attribut solde
                XmlAttribute solde = doc.CreateAttribute("solde");
                solde.Value = c.Solde.ToString();
                //ajout de l'attribut solde dans le noeud compte
                comp.Attributes.Append(solde);
                if(c.GetType()==typeof(CompteEpargne))
                {
                    CompteEpargne ce=(CompteEpargne)c;
                    XmlAttribute frequence=doc.CreateAttribute("frequence");
                    frequence.Value=ce.Frequence.ToString();
                    comp.Attributes.Append(frequence);
                }
                else
                if(c.GetType()==typeof(CompteBloque))
                {
                CompteBloque cb=(CompteBloque)c;
                    CompteEpargne ce=(CompteEpargne)c;
                    XmlAttribute frequence=doc.CreateAttribute("frequence");
                    frequence.Value=ce.Frequence.ToString();
                    comp.Attributes.Append(frequence); 
                    XmlAttribute duree=doc.CreateAttribute("duree");
                    duree.Value=cb.Duree;
                    comp.Attributes.Append(duree);
                }
                else
                    if(c.GetType()==typeof(CompteDecouvert))
                    {
                        CompteDecouvert cd=(CompteDecouvert)c;
                        XmlAttribute decouvert=doc.CreateAttribute("decouvert");
                    decouvert.Value=cd.Decouvert.ToString();
                    comp.Attributes.Append(decouvert);
                    }
                     doc.FirstChild.AppendChild(comp);//ajout de noeud compte
                     doc.Save(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml");//Enregistrement du flux dans un fichier xml
     
            }
     
            #endregion
        }
    }

  3. #3
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 250
    Par défaut
    Citation Envoyé par manidis Voir le message
    ... j'ai un problème sur la recherche dans le fichier xml...
    Dis nous en plus sur ton problème si tu veux qu'on t'aide ^

    PS : Mets des balises CODE et pas QUOTE sur ton code stp

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Par défaut
    Bonjour au fait mon code pour la création du fichier xml est celui-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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;
    using System.Xml;
    using System.IO;
    using Model;
     
     
    namespace Model
    {
       public class xmlCompte
        {
     
            #region"fichier xml pur l'Entreprise"
            public void AddCompte(CompteCourant c)
            {
                XmlDocument doc = new XmlDocument();//Création d'un objet document xml qui permet de représenter un fichier xml
                if (!File.Exists(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml"))
                {
                    //création d'un noeud xml
                    XmlElement root = doc.CreateElement("Comptes");//<Comptes></Comptes>
                    doc.AppendChild(root);
                }
                else
                {
                    doc.Load(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml");//changement du flux xml
                }
                //création du noeud compte
                XmlElement comp = doc.CreateElement("Compte");
                XmlAttribute numcompte = doc.CreateAttribute("numcompte");
                numcompte.Value = c.Numcompte.ToString();
                comp.Attributes.Append(numcompte);
                //comp.InnerText = c.Numcompte.ToString();
                //création de l'attribut ninea
                XmlAttribute typecompte = doc.CreateAttribute("typecompte");
                typecompte.Value = c.Typecompte;
                //ajout de l'attribut ninea dans le noeud compte
                comp.Attributes.Append(typecompte);
                //création de l'attribut ninea
                XmlAttribute datecreation = doc.CreateAttribute("datecreation");
                datecreation.Value = c.Datecreation.ToLongDateString() + " " + DateTime.Now.TimeOfDay;
                //ajout de l'attribut ninea dans le noeud compte
                comp.Attributes.Append(datecreation);
                //création de l'attribut solde
                XmlAttribute solde = doc.CreateAttribute("solde");
                solde.Value = c.Solde.ToString();
                //ajout de l'attribut solde dans le noeud compte
                comp.Attributes.Append(solde);
                if(c.GetType()==typeof(CompteEpargne))
                {
                    CompteEpargne ce=(CompteEpargne)c;
                    XmlAttribute frequence=doc.CreateAttribute("frequence");
                    frequence.Value=ce.Frequence.ToString();
                    comp.Attributes.Append(frequence);
                }
                else
                if(c.GetType()==typeof(CompteBloque))
                {
                CompteBloque cb=(CompteBloque)c;
                    CompteEpargne ce=(CompteEpargne)c;
                    XmlAttribute frequence=doc.CreateAttribute("frequence");
                    frequence.Value=ce.Frequence.ToString();
                    comp.Attributes.Append(frequence); 
                    XmlAttribute duree=doc.CreateAttribute("duree");
                    duree.Value=cb.Duree;
                    comp.Attributes.Append(duree);
                }
                else
                    if(c.GetType()==typeof(CompteDecouvert))
                    {
                        CompteDecouvert cd=(CompteDecouvert)c;
                        XmlAttribute decouvert=doc.CreateAttribute("decouvert");
                    decouvert.Value=cd.Decouvert.ToString();
                    comp.Attributes.Append(decouvert);
                    }
                     doc.FirstChild.AppendChild(comp);//ajout de noeud compte
                     doc.Save(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml");//Enregistrement du flux dans un fichier xml
     
            }
     
            #endregion
        }
    }
    Les code que j'ai écrit pour faire la recherche dans le fichier xml est celui-ci mais elle ne marche pas:
    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
    41
    42
    static public ArrayList LoadComp(string path)
            {
                compte c = new compte();    
               ArrayList comp = new ArrayList();
                XmlDocument doc = new XmlDocument();
                doc.Load(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml");
                XmlNode xcomp = doc.FirstChild.SelectSingleNode("compte[@numcompte=" + (c.numcompte) + "]");
                //parcours des noeuds
                foreach (XmlNode com in xcomp)
                {
     
                    xcomp.Attributes["numcompte"].Value=Convert.ToString(c.Numcompte);
                    xcomp.Attributes["typecompte"].Value = c.Typecompte;
                    xcomp.Attributes["datecreation"].Value = c.datecreation.ToString();
                    xcomp.Attributes["solde"].Value = c.Solde.ToString();//récupère l'attribut Solde
                    if (c.GetType() == typeof(CompteCourant))
                    {
                        CompteCourant cc = (CompteCourant)c;
                    }
                    if (c.GetType() == typeof(CompteBloque))
                    {
                        CompteBloque cb = (CompteBloque)c;
                        xcomp.Attributes["frequence"].Value = cb.Frequence;
                        xcomp.Attributes["duree"].Value = cb.Duree;
                    }
                    if (c.GetType() == typeof(CompteEpargne))
                    {
                        CompteEpargne ce = (CompteEpargne)c;
                        xcomp.Attributes["frequence"].Value = ce.Frequence;
                    }
                    if (c.GetType() == typeof(CompteDecouvert))
                    {
                        CompteDecouvert cd = (CompteDecouvert)c;
                        xcomp.Attributes["decouvert"].Value = cd.Decouvert.ToString();
                    }
     
                    comp.Add(xcomp);//ajout dans la liste
     
                }
                return comp;
     
            }
    Le code # qui doit afficher les données trouvées dans le fichier xml(qui interagisse avec le code xml pour la recherche) derrière le bouton rechercher est celui-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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    private void BtnRechercher_Click(object sender, EventArgs e)
            {
                xmlFileUtil p = new xmlFileUtil();
                if (CmbRecherche.Text == ("Numéro de compte"))
                {
                    compte c = new compte();
                    xmlFileUtil.LoadComp(TxtRecherche.Text);
     
                   // p.ModifierCompte(TxtRecherche.Text);
     
                    //if (client.pasSucces == false)
                    //{
                        TxtNumCompte.Text = Convert.ToString(c.Numcompte);
                        CmbTypeCompte.Text = c.typecompte;
                       DtpDateCreation.Text = Convert.ToString(c.Datecreation.ToLongDateString());
                        TxtSolde.Text = Convert.ToString(c.Solde);
                        if(c.GetType()==typeof(CompteEpargne))
                        {
                            CompteEpargne ce=(CompteEpargne)c;
                            CmbFrequence.Text=ce.Frequence;
                        }
                        if(c.GetType()==typeof(CompteBloque))
                            {
                             CompteBloque cb=(CompteBloque)c;
     
                             CmbFrequence.Text=cb.Frequence;
                            CmbDuree.Text=cb.Duree;
                            }
                        if(c.GetType()==typeof(CompteDecouvert))
                        {
                            CompteDecouvert cd=(CompteDecouvert)c;
                            CmbDuree.Text=Convert.ToString(cd.Decouvert);
                        }
    Le problème que j'ai est que le code xml qui effectue la recherche ne marche pas. Je voudrais que vous m'aidiez à le corriger pour qu'il intéragisse avec le code xml qui est ci-haut car c'est ce dernier qui crée le fichier xml. Merci de m'aider a corriger les deux dernières parties de code.
    Merci d'avance.

  5. #5
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 823
    Par défaut
    Déjà, quelques points d'ordre général :
    - Utiliser un switch...case serait peut-être mieux pour effectuer les tâches selon le type de compte.
    - plutôt que d'utiliser une ArrayList pour les retours d'XmlNodes, retourne une List<XmlNode>...

    Qu'est-ce qui ne marche pas ? pas d'appel ? une exception ? tu aurais un message d'erreur à nous donner ? La ligne qui te pose problème ?
    En débug, qu'est-ce que tu obtiens avec un pas à pas détaillé ?

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Par défaut
    je reçoit ce message au niveau de l'exécution:

    Object reference not set to an instance of an object.
    et le curseur pointe au niveau du foreach sur l'objet xcomp

  7. #7
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 250
    Par défaut
    Je pense que ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNode xcomp = doc.FirstChild.SelectSingleNode("compte[@numcompte=" + (c.numcompte) + "]");
    Est fausse. Met un point d'arrêt et vérifie que l'objet est rempli.

  8. #8
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 823
    Par défaut
    Citation Envoyé par Julien_G Voir le message
    Je pense que ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNode xcomp = doc.FirstChild.SelectSingleNode("compte[@numcompte=" + (c.numcompte) + "]");
    Est fausse. Met un point d'arrêt et vérifie que l'objet est rempli.
    oui, de la NullReferenceException... l'un des éléments est null. Vérifie chaque objet précédant un point, l'un d'eux est vide.

  9. #9
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Par défaut
    Il y a un problème au niveau de la récupération de la date. Merci de m'aider sur le code que j'ai mis derrière le boutton recherche. Regarde le fichier xml de création de compte bien en haut et tu compare avec comment j'ai essayé de le récupérer

  10. #10
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 250
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xcomp.Attributes["datecreation"].Value = c.datecreation.ToString();
    Je pense que c.datecreation est null.
    D'ailleurs je ne comprend pas, tu fais juste compte c = new compte();
    Tu ne mets pas de valeurs dedans ?

  11. #11
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Par défaut
    J'ai utilise le :

    pour pouvoir accéder aux propriétés du compte.Je l'ai utilisé.

    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
    41
    42
    static public ArrayList LoadComp(string chr, string path)
            {
                compte c = new compte(); 
               ArrayList comp = new ArrayList();
                XmlDocument doc = new XmlDocument();
                doc.Load(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml");
                XmlNode xcomp = doc.FirstChild.SelectSingleNode("Compte[@numcompte="+chr+"]");
                //parcours des noeuds
                //foreach (XmlNode com in xcomp)
                //{
                    xcomp.Attributes["numcompte"].Value = chr;
                    xcomp.Attributes["typecompte"].Value = c.Typecompte;
                    xcomp.Attributes["datecreation"].Value = c.datecreation.ToString();
                    xcomp.Attributes["solde"].Value = c.Solde.ToString();//récupère l'attribut Solde
                    string test = xcomp.Attributes["typecompte"].Value;    
                if (test=="Compte Courant")
                    {
                        CompteCourant cc = (CompteCourant)c;
                    }
                    if (test=="Compte Bloqué")
                    {
                        CompteBloque cb = (CompteBloque)c;
                        xcomp.Attributes["frequence"].Value = cb.Frequence;
                        xcomp.Attributes["duree"].Value = cb.Duree;
                    }
                    if (test=="Compte Epargne")
                    {
                        CompteEpargne ce = (CompteEpargne)c;
                        xcomp.Attributes["frequence"].Value = ce.Frequence;
                    }
                    if (test=="Compte Decouvert")
                    {
                        CompteDecouvert cd = (CompteDecouvert)c;
                        xcomp.Attributes["decouvert"].Value = cd.Decouvert.ToString();
                    }
     
                    comp.Add(xcomp);//ajout dans la liste
     
                //}
                return comp;
     
            }
    J'ai un problème derrière le boutton rechercher pour récupérer la date qui vient du fichier xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DtpDateCreation.Text = c.Datecreation.ToString();

  12. #12
    Membre très actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 250
    Par défaut
    Que contient c.Datecreation exactement ? Quel est sa valeur ? Elle n'est pas null ?

  13. #13
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Par défaut
    sa valeur est 01/01/0001

    en plus, je ne recupère que ne numéro seulement.Lorsque je fais l'exécution pas à pas, tout les autres valeurs dont le typecompte,le solde sont null

  14. #14
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 823
    Par défaut
    Ben tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     compte c = new compte();
    et tu ne passes aucune valeur ensuite... normal que tu n'ais rien comme résultat.
    faire un c.TRUC où truc n'est jamais valué ta retourne la valeur par défaut, empty pour les chaines, 0 pour les int, null pour les objets, etc.

    Il y a un défaut dans la conception de ton algo...

  15. #15
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burundi

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 23
    Par défaut
    J'ai résolu le problème et peut être que ça peut aider une autre personne
    Code xml

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    public static ArrayList LoadPers(string num,string path)
            {
                if (string.IsNullOrEmpty(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml"))
                    return null;//chemin invalide
                if (!File.Exists(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml"))
                    return null;//Fichier inexistant
                XmlDocument doc = new XmlDocument();
                doc.Load(@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml");//changement du flux xml
                ArrayList pers = new ArrayList();
                XmlNodeList xpers = doc.FirstChild.SelectNodes("Compte[@numcompte=" + num + "]");//récuperer l'ensemble des sous noeuds de personnes
                //parcours des noeuds
                foreach (XmlNode per in xpers)
                {
                    compte p = new compte();
                    p.numcompte = double.Parse(per.Attributes["numcompte"].Value);
                    p.typecompte = per.Attributes["typecompte"].Value;//récupère l'attribut nom
                    p.datecreation = Convert.ToDateTime(per.Attributes["datecreation"].Value);//récupère l'attribut nom
                    p.solde = double.Parse(per.Attributes["solde"].Value);
                    //p.solde = Convert.ToInt16(per.InnerText);
                    string test = per.Attributes["typecompte"].Value;
                    pers.Add(p);//ajout dans la liste
                    if (test == "Compte Courant")
                    {
                        CompteCourant ccourt = new CompteCourant();
     
                        pers.Add(ccourt);//ajout dans la liste
                    }
     
                    if (test == "Compte Bloqué")
                    {
                        CompteBloque cb = new CompteBloque();
                        cb.Frequence = per.Attributes["frequence"].Value;
                        cb.duree = per.Attributes["duree"].Value;
                        pers.Add(p);//ajout dans la liste
                    }
     
                    if (test=="Compte Epargne")
                    {
                        CompteEpargne ce =new CompteEpargne();
                        ce.Frequence = per.Attributes["frequence"].Value;
                        pers.Add(p);//ajout dans la liste
                    }
     
                    if (test=="Compte Decouvert")
                    {
                        CompteDecouvert cd = new CompteDecouvert();
                        cd.Decouvert = double.Parse(per.Attributes["decouvert"].Value);
                        pers.Add(p);//ajout dans la liste
                    }
                }
                return pers;
     
            }
    code c# à mettre derrière le bouton recherche

    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
    xmlFileUtil p = new xmlFileUtil();/*nom de la classe qui contient le controleur */
                if (CmbRecherche.Text == ("Numéro de compte"))
                {
                    list = xmlFileUtil.LoadPers(TxtRecherche.Text,@"C:\Users\Administrateur\Desktop\Projet Banque\GestionComptes\Fihierxml\Comptes.xml");
     
                    foreach (compte cc in list)
                    {
                        TxtNumCompte.Text = Convert.ToString(cc.Numcompte);
                        CmbTypeCompte.Text = cc.Typecompte;
                        DtpDateCreation.Text = Convert.ToString(cc.Datecreation);
                        TxtSolde.Text = Convert.ToString(cc.Solde);
                        if (cc.Typecompte =="Compte Epargne")
                        {
                            CompteEpargne ce = new CompteEpargne();
                            CmbFrequence.Text = ce.Frequence;
                        }
                        if (cc.Typecompte == "Compte Bloque")
                        {
                            CompteBloque cb = new CompteBloque();
     
                            CmbFrequence.Text = cb.Frequence;
                            CmbDuree.Text = cb.Duree;
                        }
                        if (CmbTypeCompte.Text == "Compte Decouvert")
                        {
                            CompteDecouvert cd = new CompteDecouvert();
                            CmbDuree.Text = Convert.ToString(cd.Decouvert);
                        }
                    }
                }

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

Discussions similaires

  1. Javascript et Recherche dans un fichier XML
    Par Invité dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/02/2007, 08h27
  2. [XSLT] Comment rechercher dans un fichier xml
    Par abdoulax dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/10/2006, 19h28
  3. Probleme dans mon code recherche dans un fichier Xml
    Par dederfred dans le forum Delphi
    Réponses: 11
    Dernier message: 21/10/2006, 16h51
  4. Faire une recherche dans un fichier XML
    Par Devilish_Seraph dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 21/01/2006, 13h41
  5. recherche dans un fichier xml (castor)
    Par pingoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 06/09/2004, 14h28

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