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
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
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.
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.
donc si j'ai bien compris ce que tu cherches a faire, il va falloir suivre un cheminement du genre
supposons que tu aies besoin de creer des instances de
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
[partie sur le lien entre la classe c++ et le format du fichier xml]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class machin{ std::string a,b,c; };
le format de ton fichier XML sera n'importe quel motif qui permettra de representer ces attributs, par exemple
(tu noteras qu'on peut tout a fait choisir autre chose par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part <machin a="qqch1" b="qqch2" c="qqch3"/>
tout depend des infos que tu as a stocker)
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>
et ton fichier XML pourra par exemple ressembler a
[/partie sur le lien entre la classe c++ et le format du fichier xml]
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>
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
ainsi, apres la boucle tu auras les infos de ton fichier XML.
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 }
Donc par rapport à ce que tu me dis :
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?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>
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
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.Envoyé par freecell31
Je pense qu'on peut toujours trouver une correspondance entre un fichier XML et une description de classe.Envoyé par freecell31
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:
on peut bien evidemment enrichir le schema en ajoutant la notion de visibilite publique, privee ou d'autres concepts objets.
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>
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 ?
Partager