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 :

Choix API XML


Sujet :

XML

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut Choix API XML
    Salut,

    Je cherche une API open source, légère et efficace pour la lecture écriture de fichiers XML en C++.

    Pour l'instant j'ai essayé : http://www.xmlsoft.org/ et je m'apprête à regarder http://xml.apache.org/xerces-c/ .

    libxml (de xmlsoft) a l'air solide et très complet mais l'API me semble horriblement complexe, au point que j'ai réussi à écrire un xml (assez facilement) mais je n'ai toujours pas trouvé les fonctions qui permettent de le parcourir par exemple en sélectionnant des ensembles de noeuds ou de récupérer une valeur. Je me dis qu'il doit y avoir plus simple...

    Une API qui permet d'ouvrir et valider un fichier, de se positionner sur un noeud, d'itérer sur un sous-ensemble de noeuds fils et de récupérer des valeurs d'attributs sous différents formats me suffirait amplement.

    Que me suggérez vous ?

    Merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    TinyXML, définitivement. Enfin, t'auras juste pas la validation.

  3. #3
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Si tu cherches un bon parseur validant, prend Xerces. Prends garde à la gestion de la mémoire, et ça roule !
    Les tutos sur le site sont assez explicites et on s'en sort assez vite.
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  4. #4
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Patriarch24
    Si tu cherches un bon parseur validant, prend Xerces. Prends garde à la gestion de la mémoire, et ça roule !
    Les tutos sur le site sont assez explicites et on s'en sort assez vite.
    J'ai vu qu'il y avait une partie XML dans Poco que tu m'as déjà conseillé pour le logging, ça m'intéresse de n'avoir qu'une seule bibliothèque d'utilitaires alors je vais creuser dans cette direction (sauf avis contraire), j'ai déjà réussi à l'utiliser un peu mais j'ai pas encore vérifié toutes les possibilités. Sinon je me rabattrais vers TinyXML.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Soit dit en passant, je crois qu'il y a un tuto pas mal fait sur Tinyxml quelquepart sur developpez.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    moi j'aurais choisi libxml,
    disponible sur toute les plateformes, possibilité de faire du xpath et de l'xslt.
    disponible par default sur macosx, sur la plupart des unix, et par PHP.

    sans compter que c'est le plus rapide en execution ....

  7. #7
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Citation Envoyé par tnarol
    J'ai vu qu'il y avait une partie XML dans Poco que tu m'as déjà conseillé pour le logging, ça m'intéresse de n'avoir qu'une seule bibliothèque d'utilitaires alors je vais creuser dans cette direction (sauf avis contraire), j'ai déjà réussi à l'utiliser un peu mais j'ai pas encore vérifié toutes les possibilités. Sinon je me rabattrais vers TinyXML.
    Par contre, pas de validation (prévu pour la version 1.4 je crois ).
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Personnellement, ne trouvant rien qui me satisfasse j'ai décidé de développer une surcouche à xerces-c.
    Ce que je reproche aux solutions existantes c'est de devoir manipuler les noeuds à la main, en général avec des APIs pas très intiutives et plutôt bas niveau.

    J'en profite pour faire un peu de pub au passage, le résultat est XeuMeuLeu.

    MAT.

  9. #9
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Ce que je reproche aux solutions existantes c'est de devoir manipuler les noeuds à la main, en général avec des APIs pas très intiutives et plutôt bas niveau.
    Si tu utilises DOM, alors tu n'as pas d'autres choix. Il existe d'autre manière de faire :
    * SAX, basé sur de l'évènementiel, sur lequel est basé DOM d'ailleurs ;
    * StAX, pour Streaming XML, basé sur le modèle itérateur ;
    * VTD-XML pour Virtual Token Descriptor XML processing, basé sur une description à base de token).
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  10. #10
    Membre habitué Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Points : 146
    Points
    146
    Par défaut
    Personnellement, je te conseillerai aussi d'utiliser libxml. Je l'ai utilisée dans un projet en langage C et je l'ai trouvé relativement facile à utiliser
    Athlon 6000+ Dual Core & GeForce 8600 GT -- Ubuntu Gutsy

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Hey, on se croirait sur un forum C.
    Utilisation d'une api C dans une apli C++ -> pô bien.
    Vous pourriez au moins faire réfèrence aux wrapper C++ qui existent, je suis presque sur qu'il en existe au moins pour libxml.

  12. #12
    Membre habitué Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Points : 146
    Points
    146
    Par défaut
    Utilises libxml++ alors
    Athlon 6000+ Dual Core & GeForce 8600 GT -- Ubuntu Gutsy

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Citation Envoyé par Patriarch24
    Si tu utilises DOM, alors tu n'as pas d'autres choix. Il existe d'autre manière de faire :
    * SAX, basé sur de l'évènementiel, sur lequel est basé DOM d'ailleurs ;
    * StAX, pour Streaming XML, basé sur le modèle itérateur ;
    * VTD-XML pour Virtual Token Descriptor XML processing, basé sur une description à base de token).
    Ok c'est la théorie mais si on regarde les implémentations C++ ça limite tout de suite pas mal (même en incluant celle pour/en C).

    Je viens de voir qu'il existait une implémentation de VTD-XML mais leurs leurs exemples de code ne m'embalent pas là comme ça, surtout que c'est du C en fait.
    Ca ne semble pas tellement plus verbeux (mais plus bordélique c'est clair) que ceux de tinyxml.
    Et c'est pas tellement mieux du côté de libxml++.

    Tous ces new, set et if ça fait quand même au final du code bien bordélique avec un rapport code utile/bruit pas transcendant...
    Enfin c'est juste mon opinion

    XiMoL avait une approche interessante j'avais trouvé mais malheureusement le projet a été abandonné (et faire un parser à la main de zéro c'est quand même un gros boulot).

    MAT.

Discussions similaires

  1. [Continuum] API XML-RPC : remarques !
    Par dev09 dans le forum Intégration Continue
    Réponses: 27
    Dernier message: 10/07/2007, 15h33
  2. Choix API graphique pour Windows, Linux, Mac ?
    Par Tarteens dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 15/06/2007, 11h23
  3. Choisir son API XML ?
    Par laclac dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 30/01/2006, 14h45
  4. Réponses: 4
    Dernier message: 22/01/2004, 08h27
  5. Choix hierarchistation XML !!??
    Par psyco2604 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 16/05/2003, 13h28

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