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
   | private static string chemin; //qui va être utiliser pour chercher le chemin (path)
 
      // Modifier des données XML déja existantes
        public static Model.compte RechercherCompteparNumero(string numcompte)
            {
            //on déclare et on crée une instance des variables nécésssaires pour la recherche    
            Model.compte client = new Model.compte();
            XPathDocument xpathDoc = new XPathDocument("Comptes.xml");
            XPathNavigator Navigator;
            XPathNodeIterator Nodes;
            //on affecte false à la variable PasSucess afin de vérifier par la suite si la recherche a été fructueuse
            client.PasSucces = false;
            //on crée un navigateur
            Navigator = xpathDoc.CreateNavigator();
            //On crée ici l'expression xpath de recherche de client à partir du numéro de compte
            chemin = "//Compte[@numcompte='" + numcompte + "'and status!='Deleted']";
            //on lance la recherche
            Nodes = Navigator.Select(Navigator.Compile(chemin));
            //on vérifie si la recherche a été fructueuse
            if (Nodes.Count != 0)
            {
                Nodes.MoveNext(); //pour se positionner sur le noeud recherché
                //Encodage des données dans la classe client
                client.Numcompte = numcompte; ;//pas besoin de cherche cette donnée vu que c'est notre critère de recherche,on peut donc l'encoder
                Nodes.Current.MoveToFirstChild();//on se déplace sur le premier noeud enfant
                client.Typecompte = Nodes.Current.Value;
                Nodes.Current.MoveToNext();
                client.Datecreation = Convert.ToDateTime(Nodes.Current.Value);
                Nodes.Current.MoveToNext();
                client.Solde = double.Parse(Nodes.Current.Value);
                Nodes.Current.MoveToNext();
                if (client.GetType() == typeof(Entreprise))
                {
                    client.Ent.Id = double.Parse(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    client.Ent.Ninea = Nodes.Current.Value;
                    Nodes.Current.MoveToNext();
                    client.Ent.Registre = Nodes.Current.Value;
                    Nodes.Current.MoveToNext();
                    client.Ent.Nom = Nodes.Current.Value;
                    Nodes.Current.MoveToNext();
                    client.Ent.Adresse = Nodes.Current.Value;
                    Nodes.Current.MoveToNext();
                    client.Ent.Tel = double.Parse(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    client.Ent.Fax = double.Parse(Nodes.Current.Value);
                }
                if (client.GetType() == typeof(PersonnePhysique))
                {
                    client.Pp.Id = double.Parse(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    client.Pp.Nom = Nodes.Current.Value;
                    Nodes.Current.MoveToNext();
                    client.Pp.Prenom = Nodes.Current.Value;
                    Nodes.Current.MoveToNext();
                    client.Pp.Datenais = Convert.ToDateTime(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    client.Pp.Adresse = Nodes.Current.Value;
                    Nodes.Current.MoveToNext();
                    client.Pp.Tel = double.Parse(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    client.Pp.Fax = double.Parse(Nodes.Current.Value);
                }
            }
            else //si aucun compte n'a été trouvé
            {
                client.PasSucces = true;
            }
            return client; //renvoi de toutes les données dans une instance de la classe "compte"
        } | 
Partager