none
Ecrire dans un fichier XML

    Question

  • Bonjour ,

    je cherche à écrire dans un endroit de mon fichier XML avec le bon id de carte et avec une variable de temps réel pour le jour et lorsque je passe mon lecteur RFID sauf que je ne comprends pas pourquoi ça n'écrit pas l'heure actuelle dans entrée1 dans jeudi lorsque je passe ma carte. Mon code c#: 

    XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("C:\\Users\\Antoine\\Documents\\Visual Studio 2012\\Projects\\Badgeuse\\Badgeuse\\bin\\Debug\\horaires.xml"); XmlNode node = xmlDoc.SelectSingleNode("/DocumentElement/tableau[id='" + numCarte + "'][jour='" + rfid.Dateréel + "']/entrée1"); if (node != null) { node.InnerText = rfid.Tempsréel; } else { //Alerter : quelqu'un n'est pas autorisé d'accès } xmlDoc.Save("C:\\Users\\Antoine\\Documents\\Visual Studio 2012\\Projects\\Badgeuse\\Badgeuse\\bin\\Debug\\horaires.xml");

    et mon code XML:

    <?xml version="1.0" standalone="yes"?>
    <DocumentElement>
      <tableau>
        <id>8B98E</id>
        <jour>lundi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
        <Total>
        </Total>
      </tableau>
      <tableau>
        <jour>mardi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
      </tableau>
      <tableau>
        <jour>mercredi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>s</entrée2>
        <sortie2>
        </sortie2>
      </tableau>
      <tableau>
        <jour>jeudi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
      </tableau>
      <tableau>
        <jour>vendredi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
      </tableau>
      <tableau>
        <jour>Total de la semaine</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
      </tableau>
      <tableau>
        <id>6457C</id>
        <jour>lundi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
        <Total>
        </Total>
      </tableau>
      <tableau>
        <jour>mardi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
      </tableau>
      <tableau>
        <jour>mercredi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
      </tableau>
      <tableau>
        <jour>jeudi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
      </tableau>
      <tableau>
        <jour>vendredi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
      </tableau>
      <tableau>
        <jour>Total de la semaine</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
      </tableau>
    </DocumentElement>

    Si quelqu'un pourrait m'aider sur le chemin car je pense qu'elle est là l'erreur.
    Merci d'avance


    jeudi 18 mai 2017 15:24

Réponses

  • Bonjour Antoine,

    je ne comprends pas pourquoi ça n’écrit pas l'heure actuelle dans entrée1 dans jeudi lorsque je passe ma carte.

      <tableau>
        <jour>jeudi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
      </tableau>

    Le problème semble être dans le contenu du fichier XML, parce que il n’y a pas de nœud id dans le nœud tableau qui contient jeudi. Il suffit de spécifier le nœud id dans le fichier XML.

    Merci de nous tenir au courant.

    Cordialement,
    Dimitar

    vendredi 19 mai 2017 15:18
  • Bonjour Antoine,

    Si j’ai bien compris, vous calculez le nombre d’entrées et le nombre de sorties pour chaque jour. Dans ce cas, je vous propose à tester le code suivant :

                	XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load("C:\\Users\\Antoine\\Documents\\Visual Studio 2012\\Projects\\Badgeuse\\Badgeuse\\bin\\Debug\\horaires.xml");
                    XmlNode node = xmlDoc.SelectSingleNode("/DocumentElement/tableau[id='" + "123" + "'][jour='" + "jeudi" + "']");
                    int entrees = 0, sorties = 0;
                    if (node != null)
                    {
                        XmlNodeList noeuds = node.ChildNodes;
                        foreach (XmlNode n in noeuds)
                        {
                            if((n.Name.Length > 6)&&(!String.IsNullOrEmpty(n.InnerText)))
                            {
                                if (n.Name.Substring(0, 6) == "entrée")
                                    entrees++;
                                else if (n.Name.Substring(0, 6) == "sortie")
                                    sorties++;
                            }
                        }
                    }
                    else
                    {
                        //Alerter : quelqu’un n’est pas autorisé d’accès
                    }
                    Console.WriteLine("Entrées: {0}, sorties: {1}", entrees, sorties); //le jeudi, une entrée et deux sorties ont été effectuées

    Cordialement,
    Dimitar

    mardi 23 mai 2017 08:56

Toutes les réponses

  • Bonjour Antoine,

    je ne comprends pas pourquoi ça n’écrit pas l'heure actuelle dans entrée1 dans jeudi lorsque je passe ma carte.

      <tableau>
        <jour>jeudi</jour>
        <entrée1>
        </entrée1>
        <sortie1>
        </sortie1>
        <entrée2>
        </entrée2>
        <sortie2>
        </sortie2>
      </tableau>

    Le problème semble être dans le contenu du fichier XML, parce que il n’y a pas de nœud id dans le nœud tableau qui contient jeudi. Il suffit de spécifier le nœud id dans le fichier XML.

    Merci de nous tenir au courant.

    Cordialement,
    Dimitar

    vendredi 19 mai 2017 15:18
  • Bonjour, 

    en effet , je m'y suis vite rendu compte : 

    <?xml version="1.0" standalone="yes"?>
    <DocumentElement>
      <utilisateur>
        <id>8B98E</id>
        <jour>lundi</jour>
        <entree1>
        </entree1>
        <sortie1>
        </sortie1>
        <entree2>
        </entree2>
        <sortie2>
        </sortie2>
        <total>
        </total>
      </utilisateur>
      <utilisateur>
        <id>8B98E</id>
        <jour>mardi</jour>
        <entree1>
        </entree1>
        <sortie1>
        </sortie1>
        <entree2>
        </entree2>
        <sortie2>
        </sortie2>
        <total>
        </total>
      </utilisateur>
      <utilisateur>
        <id>8B98E</id>
        <jour>mercredi</jour>
        <entree1>
        </entree1>
        <sortie1>
        </sortie1>
        <entree2>
        </entree2>
        <sortie2>
        </sortie2>
        <total>
        </total>
      </utilisateur>
      <utilisateur>
        <id>8B98E</id>
        <jour>jeudi</jour>
        <entree1>09:52</entree1>
        <sortie1>09:17</sortie1>
        <entree2>
        </entree2>
        <sortie2>09:15</sortie2>
        <total>09:17</total>
      </utilisateur>
      <utilisateur>
        <id>8B98E</id>
        <jour>vendredi</jour>
        <entree1>09:11</entree1>
        <sortie1>09:12</sortie1>
        <entree2>09:12</entree2>
        <sortie2>09:12</sortie2>
        <total></total>
      </utilisateur>
      <utilisateur>
        <id>8B98E</id>
        <jour>total</jour>
        <entree1>
        </entree1>
        <sortie1>
        </sortie1>
        <entree2>
        </entree2>
        <sortie2>
        </sortie2>
        <total>
        </total>
      </utilisateur>
    </DocumentElement>
    J'ai donc tout qui fonctionne mais maintenant , il me reste le total à afficher après chaque jour ( c'est le total des entrées et sorties). Y a-t-il une ligne pour faire des calculs par nœud ?

    samedi 20 mai 2017 08:11
  • Bonjour Antoine,

    Si j’ai bien compris, vous calculez le nombre d’entrées et le nombre de sorties pour chaque jour. Dans ce cas, je vous propose à tester le code suivant :

                	XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load("C:\\Users\\Antoine\\Documents\\Visual Studio 2012\\Projects\\Badgeuse\\Badgeuse\\bin\\Debug\\horaires.xml");
                    XmlNode node = xmlDoc.SelectSingleNode("/DocumentElement/tableau[id='" + "123" + "'][jour='" + "jeudi" + "']");
                    int entrees = 0, sorties = 0;
                    if (node != null)
                    {
                        XmlNodeList noeuds = node.ChildNodes;
                        foreach (XmlNode n in noeuds)
                        {
                            if((n.Name.Length > 6)&&(!String.IsNullOrEmpty(n.InnerText)))
                            {
                                if (n.Name.Substring(0, 6) == "entrée")
                                    entrees++;
                                else if (n.Name.Substring(0, 6) == "sortie")
                                    sorties++;
                            }
                        }
                    }
                    else
                    {
                        //Alerter : quelqu’un n’est pas autorisé d’accès
                    }
                    Console.WriteLine("Entrées: {0}, sorties: {1}", entrees, sorties); //le jeudi, une entrée et deux sorties ont été effectuées

    Cordialement,
    Dimitar

    mardi 23 mai 2017 08:56