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

XML Discussion :

Manipulation d'un fichier XML en c


Sujet :

XML

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Par défaut Manipulation d'un fichier XML en c
    BOnjour,

    je souhaite parser un fichier XML dans un programme écris en C.

    Je sais qu'il existe expat, cependant je ne trouve pas d'exemple m'expliquant simplement comment utiliser les fonctions de ce parseur ( je ne parle pas des logiques des callback).

  2. #2
    Membre éclairé Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Par défaut
    Des autres solutions ici

  3. #3
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    grace à google et les mots clefs suivants : expat +example filetype:c

    j'ai trouvé ca : http://mikie.iki.fi/lxr/source/expat/examples/outline.c

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Par défaut
    Je vous remerice pour vos réponses.

    Je souhaite resté sur expat car c'est un parseur optimisé pour l'embarqué, (donc un peu limité mais pour lire un fichier XML et récuperer des info cela suffit).

    Merci pour l'exemple que tu me donne, je l'avais déjà mais je n'arrive pas à faire d'analogie avec par exemple libxml2 :
    Par exemple chercher la valeur d'un attribut en fonction du nom de l'attribut et en fonction.

    En gros je ne vois pas comment récuperer les valeurs de mes attributs.

  5. #5
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    dans le répertoire contenant le fichier exemple tu dois avoir d'autres exemples je penses vu le nom regarde quand meme et dis moi si c'est bon ou pas

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Par défaut
    En réalité j'ai telecherger expat-1.95.6.tar.gz et il y a effectivement un repertoire sample, mais les exemples contenus dans ce repertoire ne sont pas d'une grande aide

  7. #7
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    excuse moi je parlais de cet exemple la : http://mikie.iki.fi/lxr/source/expat...les/elements.c

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Par défaut
    lol, c'est à cet exemple que je pensais, mais j'ai toujours du mal à voir l'analogie.

    Je te remerice pour l'aide que tu m'a apporté

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Par défaut
    J'ai un probleme :

    Comment transformer un fichier xml en flux de données.

    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
     
    #include <stdio.h>
    008 #include "expat.h"
    009 
    010 static void
    011 startElement(void *userData, const char *name, const char **atts)
    012 {
    013   int i;
    014   int *depthPtr = userData;
    015   for (i = 0; i < *depthPtr; i++)
    016     putchar('\t');
    017   puts(name);
    018   *depthPtr += 1;
    019 }
    020 
    021 static void
    022 endElement(void *userData, const char *name)
    023 {
    024   int *depthPtr = userData;
    025   *depthPtr -= 1;
    026 }
    027 
    028 int
    029 main(int argc, char *argv[])
    030 {
    031   char buf[BUFSIZ];
    032   XML_Parser parser = XML_ParserCreate(NULL);
    033   int done;
    034   int depth = 0;
    035   XML_SetUserData(parser, &depth);
    036   XML_SetElementHandler(parser, startElement, endElement);
    037   do {
    038     size_t len = fread(buf, 1, sizeof(buf), stdin);
    039     done = len < sizeof(buf);
    040     if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) {
    041       fprintf(stderr,
    042               "%s at line %d\n",
    043               XML_ErrorString(XML_GetErrorCode(parser)),
    044               XML_GetCurrentLineNumber(parser));
    045       return 1;
    046     }
    047   } while (!done);
    048   XML_ParserFree(parser);
    049   return 0;
    050 }

    effectivement c'est au moment du fread que l'on pointe vers un flux de données à parser.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Par défaut
    Ok probleme résolu

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

Discussions similaires

  1. Manipulation d'un fichier XML avec java
    Par rourou25 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 15/05/2012, 09h37
  2. [SimpleXML] manipulation d'un fichier xml en utilisant php
    Par abauser1 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 27/04/2011, 10h22
  3. manipulation d'un fichier xml pour établir une connexion avec une BD SQL Server
    Par marwacom dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 31/03/2011, 16h36
  4. Manipulation d'un fichier XML avec Perl
    Par brahak dans le forum Modules
    Réponses: 3
    Dernier message: 01/05/2006, 22h36
  5. [xml] Manipuler un fichier XML récupéré dynamiquement
    Par goldenboy68 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 03/10/2005, 11h59

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