コード例 #1
0
        /// <summary>
        /// Search for an Expert data using its login.
        /// </summary>
        /// <param name="login">The login of the targeted Expert.</param>
        /// <returns></returns>
        public static Manager.Expert SearchById(string login)
        {
            /* On déclare et on crée une instance des variables nécéssaires pour la recherche */
            Manager.Expert expert = new Manager.Expert();
            try
            {
                XPathDocument     XPathDocu = new XPathDocument(path + "Experts.xml");
                XPathNavigator    Navigator;
                XPathNodeIterator Nodes;

                /* On affecte false à  la variable NoMatches afin de vérifier par la suite
                 * si la recherche a été fructueuse*/
                expert.setnoMatch(false);
                /* On crée un navigateur */
                Navigator = XPathDocu.CreateNavigator();
                /* On crée ici l'expression XPath de recherche d'expert à  partir du login */
                //starts-with('XML','X')
                //string ExpXPath = "//Expert[@login='******' and status != 'Deactivated']";
                string ExpXPath = "//Expert[starts-with(@login,'" + login + "') and status != 'Deactivated']";
                /* On lance la recherche */
                Nodes = Navigator.Select(Navigator.Compile(ExpXPath));
                /* On vérifie si la recherche a été fructueuse */
                if (Nodes.Count != 0)
                {
                    Nodes.MoveNext(); // NOTE: Necéssaire pour se placer sur le noeud recherché
                    /* Encodage des données dans la classe Expert */
                    expert.setId(Convert.ToInt32(Nodes.Current.GetAttribute("id", "")));
                    expert.setLogin(Nodes.Current.GetAttribute("login", ""));
                    expert.setPassword(Nodes.Current.GetAttribute("password", ""));
                    Nodes.Current.MoveToFirstChild(); /* On se déplace sur le premier noeud
                                                       * enfant "Prenom" */
                    expert.setFirstName(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();       // On se déplace sur le noeud suivant "Nom"
                    expert.setLastName(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    expert.setEmail(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    expert.setPhoneNumber(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    expert.setAddress(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    expert.setRole(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    expert.setSpecialty(Nodes.Current.Value);
                    Nodes.Current.MoveToNext();
                    expert.setStatus(Helper.StringToStatus(Nodes.Current.Value));
                }
                /* Si aucun expert n'a été trouvé */
                else
                {
                    expert.setnoMatch(true);
                }
            }
            catch (Exception x)
            { expert.setnoMatch(true); }
            /* Renvoi de toutes les données dans une instance de la classe "Client" */
            return(expert);
        }
コード例 #2
0
 /// <summary>
 /// Search for an Expert data using its login.
 /// </summary>
 /// <param name="login">The login of the targeted Expert.</param>
 /// <returns></returns>
 public static Manager.Expert SearchById(string login)
 {
     /* On déclare et on crée une instance des variables nécéssaires pour la recherche */
     Manager.Expert expert = new Manager.Expert();
     try
     {
         XPathDocument XPathDocu = new XPathDocument(path + "Experts.xml");
         XPathNavigator Navigator;
         XPathNodeIterator Nodes;
         /* On affecte false à  la variable NoMatches afin de vérifier par la suite
        * si la recherche a été fructueuse*/
         expert.setnoMatch(false);
         /* On crée un navigateur */
         Navigator = XPathDocu.CreateNavigator();
         /* On crée ici l'expression XPath de recherche d'expert à  partir du login */
         //starts-with('XML','X')
         //string ExpXPath = "//Expert[@login='******' and status != 'Deactivated']";
         string ExpXPath = "//Expert[starts-with(@login,'" + login + "') and status != 'Deactivated']";
         /* On lance la recherche */
         Nodes = Navigator.Select(Navigator.Compile(ExpXPath));
         /* On vérifie si la recherche a été fructueuse */
         if (Nodes.Count != 0)
         {
             Nodes.MoveNext(); // NOTE: Necéssaire pour se placer sur le noeud recherché
             /* Encodage des données dans la classe Expert */
             expert.setId(Convert.ToInt32(Nodes.Current.GetAttribute("id", "")));
             expert.setLogin(Nodes.Current.GetAttribute("login", ""));
             expert.setPassword(Nodes.Current.GetAttribute("password", ""));
             Nodes.Current.MoveToFirstChild(); /* On se déplace sur le premier noeud
                                            * enfant "Prenom" */
             expert.setFirstName(Nodes.Current.Value);
             Nodes.Current.MoveToNext(); // On se déplace sur le noeud suivant "Nom"
             expert.setLastName(Nodes.Current.Value);
             Nodes.Current.MoveToNext();
             expert.setEmail(Nodes.Current.Value);
             Nodes.Current.MoveToNext();
             expert.setPhoneNumber(Nodes.Current.Value);
             Nodes.Current.MoveToNext();
             expert.setAddress(Nodes.Current.Value);
             Nodes.Current.MoveToNext();
             expert.setRole(Nodes.Current.Value);
             Nodes.Current.MoveToNext();
             expert.setSpecialty(Nodes.Current.Value);
             Nodes.Current.MoveToNext();
             expert.setStatus(Helper.StringToStatus(Nodes.Current.Value));
         }
         /* Si aucun expert n'a été trouvé */
         else
         {
             expert.setnoMatch(true);
         }
     }
     catch (Exception x)
     { expert.setnoMatch(true); }
     /* Renvoi de toutes les données dans une instance de la classe "Client" */
     return expert;
 }