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/XSL et SOAP Discussion :

[C++] parseur xml


Sujet :

XML/XSL et SOAP

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 26
    Points : 8
    Points
    8
    Par défaut [C++] parseur xml
    Bonjour, j'aimerais savoir qu'est ce qu'un parseur XML et comment les utiliser ( j'en ai besoin pour récupérer des données d'un fichier xml et créer des instances en c++)
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    bien le bonjour,

    un parseur XML est un outil d'analyse de fichier XML. Il permet, en general, d'extraire des donnees d'un fichier XML.

    Un parseur XML peut utiliser plusieurs API d'analyse et il est souvent couple a un outil de validation de fichier par rapport a une grammaire. De plus, il permet souvent de modifier et d'enregistrer un document XML.

    Et pour ce qui est de l'utilisation en C++, http://c.developpez.com/bibliotheques/#XML , un article vient justement d'etre publie a ce sujet.

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Merci pour cette réponse.

    Avant le parseur je dois sauvegarder des attributs (dans un fichier xml) qu'un utilisateur va rentrer dans une IHM ( en c++, mfc) puis ensuite le parseur s'occupera de créer des instances.
    Est ce bien comme sa que sa marche et on me demande de définir le format XML mais je n'arrive pas à faire le rapport entre les classes et attributs que j'ai en cpp et ce que je dois mettre dans mon fichier XML.
    MErci pour tout aide.

  4. #4
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    donc si j'ai bien compris ce que tu cherches a faire, il va falloir suivre un cheminement du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    creation et remplissage du fichier XML via ton IHM
    et lors d'une autre execution ou plus tard ou quand tu voudras, 
    lancement du parseur sur le fichier et creation des instances
    supposons que tu aies besoin de creer des instances de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class machin{
       std::string a,b,c;
    };
    [partie sur le lien entre la classe c++ et le format du fichier xml]
    le format de ton fichier XML sera n'importe quel motif qui permettra de representer ces attributs, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <machin a="qqch1" b="qqch2" c="qqch3"/>
    (tu noteras qu'on peut tout a fait choisir autre chose par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <machin>
        <a>qqch1</a>
        <b>qqch2</b>
        <c>qqch3</c>
    </machin>
    tout depend des infos que tu as a stocker)

    et ton fichier XML pourra par exemple ressembler a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="[...]"?>
    <lstMachins>
    	<machin a="qqch11" b="qqch21" c="qqch31"/>
    	<machin a="qqch12" b="qqch22" c="qqch32"/>
    	<machin a="qqch13" b="qqch23" c="qqch33"/>
    </lstMachins>
    [/partie sur le lien entre la classe c++ et le format du fichier xml]

    ainsi, lors de l'analyse de ton fichier par le parseur, tu vas creer [par exemple] un tableau de machins
    tu pourras donc te retrouver avec quelque chose ressemblant a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    boucle qui parcourt tous les noeuds 'machin' de ton fichier xml{
        recuperation du noeud courant 
        ajout du noeud courant au tableau de machins
        incrementation de la boucle
    }
    ainsi, apres la boucle tu auras les infos de ton fichier XML.

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Donc par rapport à ce que tu me dis :
    et ton fichier XML pourra par exemple ressembler a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="[...]"?> 
    <lstMachins> 
       <machin a="qqch11" b="qqch21" c="qqch31"/> 
       <machin a="qqch12" b="qqch22" c="qqch32"/> 
       <machin a="qqch13" b="qqch23" c="qqch33"/> 
    </lstMachins>
    la balise "lstMachins" pourra correspondre par exemple au paquetage de mes classes, ensuite "machin" correspondra à la classe et "a", "b"... seront les attributs de la classe?

    En faite mon probleme c'est de voir la correspondance entre le c++ et le langage XML mais est ce qu'il y en a vraiment une??? par exemple des héritages entre classes en c++ est ce qu'il me faut les représenter et comment dans mon fichier XML??

    Merci d'avance pour toutes réponses

  6. #6
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    Citation Envoyé par freecell31
    la balise "lstMachins" pourra correspondre par exemple au paquetage de mes classes, ensuite "machin" correspondra à la classe et "a", "b"... seront les attributs de la classe?
    Non, "lstMachins" sera un groupe d'objets, pas de classes. Chaque machin decrira les attributs d'un objet, il ne s'agit pas de decrire une classe. Si on veut representer des classes et non leurs instanciations, il va falloir penser les choses differemment.

    Citation Envoyé par freecell31
    par exemple des héritages entre classes en c++ est ce qu'il me faut les représenter et comment dans mon fichier XML??
    Je pense qu'on peut toujours trouver une correspondance entre un fichier XML et une description de classe.

    Quelles sont donc les infos que tu as besoin de stocker ?
    qu'est-ce qu'une classe ?
    un ensemble d'attributs, de fonctions membres et un ou plusieurs heritages.

    on pourrait voir les choses comme ca:
    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
     
    <classe>
    <lstHeritages>
       <heritage  from="nom de la classe parente"/>
       <heritage  from="nom d'une autre classe parente"/>
    </lstHeritages>
    <lstAttributs>
       <attrib nom="a" type="string"/>
       <attrib nom="b" type="entier"/>
    </lstAttributs>
    <lstFonctions>
       <fonc nom="foo1" retour="entier">
            <arg nom="arg1" type="entier"/>
            <arg nom="arg2" type="flottant"/>
       </fonc>
       <fonc nom="foo2" retour="string">
            <arg nom="arg1" type="string"/>
       </fonc>
    </lstFonctions>
    </classe>
    on peut bien evidemment enrichir le schema en ajoutant la notion de visibilite publique, privee ou d'autres concepts objets.

    Ainsi dans ce fichier xml, je ne decris aucun objet, je ne manipule aucune valeur, je ne manipule que des types de valeur et des noms ; je detaille une classe.

    Est-ce plus ce genre de choses que tu recherches ? Cette reponse convient-elle mieux a ce que tu recherches ?
    En fait la question importante c'est, cherches-tu a stocker des valeurs pour creer/renseigner des objets ou bien cherches-tu a creer des classes ?

Discussions similaires

  1. Selon vous, le meilleur parseur XML ?
    Par Community Management dans le forum XML/XSL et SOAP
    Réponses: 22
    Dernier message: 05/06/2012, 12h39
  2. parseur XML
    Par alliance dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 17/02/2006, 11h27
  3. [XML] [EXPAT] Problème avec Parseur XML
    Par tubeless dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 09/02/2006, 09h52
  4. Parseur XML to Java pour creation de Class
    Par yannick101 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 18/07/2005, 14h20

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