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 :

Automatisation lecture XML


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Par défaut Automatisation lecture XML
    Bonjour,

    Cela fait quelques jours que je fais le tour pour trouver une réponse à ma question, mais je ne trouve pas, donc je me tourne vers vous au cas où certains d'entre vous pourraient m'apporter une réponse:

    Voilà je dois créer du code généré de lecture de fichiers XML qui lira les données de différents fichiers XML pour les attribuer à des données d'un programme en initialisation. La correspondance entre les données lues dans le XML et les données d'initialisation du programme se font via la lecture d'une table de correspondance. Cependant, le problème c'est que mes fichiers XML peuvent évoluer...leur schéma aussi (XSD), du coup il me faudrait un outil ou une méthode me permettant de lire de manière automatique mes XML (à partir des XSD ou non) et créer une structure de manière automatique qui englobe les données du XML....je ne sais pas si je suis très explicite

    Fin bon si quelqu'un à une solution....perso j'avais vu les fonctionnalités de xsd.exe qui génère un .h à partir du xsd, mais je ne vois pas comment l'utiliser pour lire le XML et stocker les données du XML dans une structure réutilisable pour faire correspondre mes données d'initialisation???

    Merci à tous de m'avoir lu et merci à ceux qui pourront m'éclairer ou m'orienter

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    De manière générale, même si le shéma de ton fichier XML évolue, ton fichier devra toujours te permettre de récupérer tes données "métier". Et comme il est impossible de faire évoluer les types de données en C++ au runtime, les évolutions "d'un coté" devront forcément être répercutées "de l'autre".

    C'est la raison pour laquelle les shéma (Xsd ou autres) existent: c'est pour s'assurer que les données représentées au niveau du fichier Xml soient "cohérentes" avec les données qui seront manipulées au niveau de l'application. Pour s'assurer que les spécifications qui définissent la manière dont les données sont transmises soient respectées.

    J'ai donc l'impression que tu recherche la licorne ou le mouton à cinq pattes, car il te sera impossible de laisser évoluer la forme de ton fichier xml sans aller modifier la manière dont il sera traité pour en extraire les données.

    Cela ne veut pas dire que la forme de ton fichier Xml doive être figée "pour l'éternité"... Cela veut juste dire que, si tu décide de la faire évoluer, tu devras veiller à prendre cette évolution en compte dans ton code
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Par défaut
    Merci Koala pour ta réponse.

    Du coup, c'est pour ça que l'on passe par du code généré. D'un coté nous avons les classes qui sont faites à partir de xsd.exe et du schéma du fichier xml, et de l'autre la table de correspondance qui évoluera elle aussi avec les fichiers XML par modification externe (une nouvelle donnée d'initialisation introduite par exemple).

    Mais ce que je cherche c'est une méthode où un outils qui va lire le fichier XML en fonction des classes écrites avec xsd.exe qui aura donc pris en compte les modification du xsd et les stocker dans un objet ou une structure facilement identifiable. Je ne sais pas si je m'exprime correctement. En fait, il faut que je fasse un parser automatique avec la création d'une structure de donnée dépendante des données du XML (sachant que j'ai le XSD)

    fin bon c'est compliqué: en gros j'ai XML => code généré => application et je dois faire correspondre les données d'initialisation de l'application avec celles de mon XML, sachant que cela peut évoluer (XML et données d'init) mais que chaque correspondance est écrite dans une table de correspondance (fichier XML permettant de générer le code)

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 151
    Billets dans le blog
    4
    Par défaut
    Si tu as déjà la génération des structures, suffit de faire une lecture récursive du xml pour remplir les structures et sous-structures.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Si tu as déjà la génération des structures, suffit de faire une lecture récursive du xml pour remplir les structures et sous-structures.
    le problème justement c'est que je n'ai pas les structures....c'est ça mon souci, comment les générer automatiquement à partir du xsd...je pensais qu'avec xsd.exe ce serait bon, mais les classes qu'il construit sont incompréhensibles et surtout inutilisables je pense

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Ca me fait un peu penser au module Python pour lire du JSON. Il est capable de sortir un dictionnaire de dictionnaires [de dictionnaires...] à partir d'un texte JSON :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> import json
    >>> t  = '{"temperature" : 25, "name" : "living room"}'
    >>> j = json.loads(t)
    >>> j
    {u'temperature': 25, u'name': u'living room'}
    >>> j["temperature"]
    25
    >>> j["name"]
    u'living room'

    Il faudrait regarder un peu plus comment ça marche mais il y a peut-être des idées de ce côté là. Néanmoins, ce module ne donne pas de classes Python pour manipuler le contenu. Et en même temps, c'est normal. Si ton XML a des éléments imbriqués, il faut définir des règles pour découper ça en classes (C++ ou autre). As-tu déjà défini des règles sur le sujet ?

Discussions similaires

  1. [SAX] Lecture XML par XmlSax
    Par Carrel dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 11/12/2006, 16h02
  2. automatiser import XML
    Par stylee307 dans le forum Access
    Réponses: 3
    Dernier message: 26/09/2006, 23h37
  3. [XML] Utilisateurs connectés Lecture XML
    Par Polaire76 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/01/2006, 12h05
  4. [C#] [WinForms] Lecture XML
    Par stailer dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/10/2004, 14h42
  5. [Débutant] Lecture xml SAX
    Par Ekros dans le forum APIs
    Réponses: 6
    Dernier message: 21/06/2004, 15h14

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