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 :

Ecrire dans un fichier XML [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 48
    Points : 18
    Points
    18
    Par défaut Ecrire dans un fichier XML
    Bonjour ,

    je cherche à écrire dans un endroit de mon fichier XML avec mon lecteur RFID sauf que je ne comprends pas pourquoi ça n'écrit pas lorsque je passe ma carte:
    Mon code c#:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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 fichier 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
    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    <?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

  2. #2
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    Bonjour je t'invite à utilisé la sérialisation XML

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    Justement , j'utilise Datagriedview c'est possible avec ?
    Car je ne comprend pas trop la sérialisation.

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Ça n'a rien avoir. DOM Save() fonctionne comme il faut. Pourtant le problème se trouve où? D'abord, la conception de l'écriture de XPath n'est pas mal. On peut l'améliorer prenant en compte qu'on peut insérer, par ignorance ou par habiture qui vient d'ailleurs hors de xml, des whitespace(s) dans les noeuds du type Text, comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //XmlNode node = xmlDoc.SelectSingleNode("/DocumentElement/tableau[id='" + numCarte + "'][jour='" + rfid.Dateréel + "']/entrée1");
    XmlNode node = xmlDoc.SelectSingleNode("/DocumentElement/tableau[normalize-space(id)='" + numCarte + "'][normalize-space(jour)='" + rfid.Dateréel + "']/entrée1");
    Et puis, il faut faire attention de l'encodage du document xml: si il est de iso-8859-1 ou même de utf-8, précisez-le dans le prolog pour être plus prudent!

    Mais je crains le problème provient ailleurs. Il faut prendre rfid ou quoi qui est capturé de serialport avec soins, parce que l'apparition des caractères de contrôle est un norme là ou dans la technologie de xml ces caractères sont considerés "dangereux". En ce qui concerne le problème, je peux dire quasiment sûr que le xpath ne matche d'aucun noeud. Il faut faire un peu de contrôle pour voir ce qui c'est passé, et la provision de "else" (if-else) est là pour ce but aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    else
    {
        //Alerter : quelqu'un n'est pas autorisé d'accès
        Console.WriteLine(numCarte + "\n" + rfid.Dateréel);
    }
    Là, il y a une chance de découvrir de quoi on compare avec id et jour.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    Merci pour l'aide.
    Lorsque je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNode node = xmlDoc.SelectSingleNode("/DocumentElement/test[normalize-space(id)='" + numCarte + "'][normalize-space(jour)='" + rfid.Dateréel + "']/entrée1");
    j'ai bien l'heure qui se met dans mon XML sauf qu'elle est dans sortie1 :
    Nom : xmlsortie.png
Affichages : 125
Taille : 10,9 Ko

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    J'ai réussi à corriger mon problème et j'ai tout qui fonctionne comme je veux sauf le total: Nom : calculxml.png
Affichages : 180
Taille : 8,6 Ko

    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 en XML ?

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    Allez:

    Pour faire du propre, il te faut créer une classe (si ce n'est déjà fait) qui correspond à tes entrées dans le fichier XML.

    Comme ça, tu auras une structuration et tu représenteras dans ta liste dans ton grid view

    pour le total, il est plus propre de le calculer et ensuite, de l'utiliser comme source de données dans l'affichage de ton gridview

    LA logique veut que la grille est bête le plus possible et se contente d'afficher des données, par de faire des calculs (ou le moins possible)
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    C'est de la sérialisation XML sauf que quand j'ai essayer je n'ai pas du tout l'affiche du tableau sur mon datagriedview.

  9. #9
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    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 en XML ?
    Oui, mais, le total après chaque jour, ça veut dire quoi?

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

Discussions similaires

  1. [DOM XML] Ecrire dans un fichier xml
    Par GTJuanpablo dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/07/2007, 15h26
  2. Réponses: 1
    Dernier message: 20/02/2007, 13h43
  3. [FLASH 8] Ecrire dans un fichier xml
    Par dom_dev dans le forum Flash
    Réponses: 9
    Dernier message: 26/09/2006, 10h10
  4. Lire/Ecrire dans un fichier .xml depuis Java
    Par SkyBioSS dans le forum Format d'échange (XML, JSON...)
    Réponses: 13
    Dernier message: 16/05/2006, 17h38
  5. <xml><asp.net> Ecrire dans un fichier xml
    Par kenkine dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 24/03/2006, 11h17

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