begin process at 2010 02 10 10:56:27
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > PARSEUR XML

PARSEUR XML


 Information sur la source

Note :
6,75 / 10 - par 4 personnes
6,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caractères Niveau :Initié Date de création :30/01/2004 Date de mise à jour :08/02/2004 17:33:33 Vu / téléchargé :9 921 / 1 429

Auteur : Hellaynnea

Ecrire un message privé
Site perso
Commentaire sur cette source (32)
Ajouter un commentaire et/ou une note

 Description

J'avais besoin d'un parseur Xml dans mon projet, je sais que ca existe mais j'en avais jamais fait alors j'ai mis les mains a la pate :)
Ca ma pris 1 journée complète (2h pour la structure de donnée a utiliser, 1h pour écrire l'automate de base et le reste pour coder/debugger et en faire un objet tout beau tout propre)
Alors l'objet c'est CXmlDocument il est composé de CXmlSections qui sont des sections du type <tag field="data" field2="data" .... />
ou <tag field="data" ... > \n[...]</tag>
enfin bref du xml quoi, il ne peut y avoir deux champs fields identique pour 1 mm section. Un section peut contenir des fils <tag ... >\n <tag_fils1 ..../> etc... qui eux mm peuvent contenir des fils etc.
Bref tout est dans le code vous verrez. Sinon j'ai mis aussi un exemple de fichier qui m'a servi d'appui pour la génération du code. Il y a aussi en goodies une fonction d'affichage. Je vous donne également une portion du code qui sert a initialiser la classe et à l'utiliser une fois qu'elle a fait son travail (avec affichage d'erreurs etc...) bon reste plus pour vous qu'a ladapter et vive les fichiers de sauvegarde en Xml
++hellaynnea

Source

  • Bon les sources que j'ai donné (pour tester) ne sont bien entendu pas complètes étant donné que le projet n'est pas fini j'ai pas le droit de le release encore mais ca viendra bientot sous GPL (dici 1/2 semaines)
  • En attendant amusez vous bien
  • Le parseur est CXmlDocument
  • la fonction d'init est MODULE::__loadXml(...)
  • et la fonction de récupération de la structure du fichier est __buildModule(...)
  • a laquelle on passe en params le documentStructuré, une structure qui peut contenir toutes les infos dont vous avez besoin pour constituer vos objets (la fonction est récursive alors fo bien qu'elle se souvienne de ce qu'elle a fait avant)
  • Bonne lecture
  • J'espère que cette source pourra vous etre utile
Bon les sources que j'ai donné (pour tester) ne sont bien entendu pas complètes étant donné que le projet n'est pas fini j'ai pas le droit de le release encore mais ca viendra bientot sous GPL (dici 1/2 semaines)
En attendant amusez vous bien
Le parseur est CXmlDocument
la fonction d'init est MODULE::__loadXml(...)
et la fonction de récupération de la structure du fichier est __buildModule(...)
a laquelle on passe en params le documentStructuré, une structure qui peut contenir toutes les infos dont vous avez besoin pour constituer vos objets (la fonction est récursive alors fo bien qu'elle se souvienne de ce qu'elle a fait avant)
Bonne lecture
J'espère que cette source pourra vous etre utile


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip CLOGFILE - CLASSE DE GESTION DE FICHIER LOG (THREAD SAFE)
Source avec Zip CXMLLINE : LIGNES XML
Source avec Zip CLASS WRAPPER STD::MAP + TEMPLATES
Source avec Zip Source avec une capture HELLPARSER - PROJET DE CRÉATION D'INTERPRÊTEURS + RAPPORT
Source avec Zip WIN32 TOOL KIT MFC LIKE + CHANGER LANGUAGE APPLI + PARSERS (...

 Sources de la même categorie

Source avec Zip RECHERCHE D'ANNAGRAMMES par Torin
GESTION DE CHAINE DE CARACTÉRE EN C++ AVEC NSTRING par xmustapha
Source avec Zip COMMENTER CODE C <=> ASM (WIN64) par BruNews
Source avec Zip GSTRING - GESTION DES CHAINES DE CARACTÈRES par Neokript
Source avec Zip ANALYSEUR SYNTAXIQUEV(0.1) par kohan95

Commentaires et avis

Commentaire de Funto66 le 30/01/2004 16:29:25

Je prends note, pour si jamais j'ai besoin de XML un jour ;)
Et c'est quoi le projet pour lequel tu as codé ce parseur....?

Commentaire de Hellaynnea le 30/01/2004 16:33:10

Le projet pour lequel j'ai besoin de ce parseur est un éditeur de plans (cartes) un logiciel de dessin en fait. Et le Xml me sert comme format pour le stockage des objets sur les cartes et le stockage global des infos.
Je le mettrai bientot sur source forge quand il sera tout bien terminé
++

Commentaire de Hellaynnea le 30/01/2004 16:37:46

d'ailleurs en parlant de mon projet j'ai vu que tu faisais un peu d'opengl. La couche graphique de l'éditeur est en 2D est codée sur l'api WIN32 mais aussi sur OPENGL (a coup de ifdef ifndef)
La couche graphique peut etre séparée du projet et ainsi etre importée dans n'importe quel autre projet. elle permet en fait d'afficher n'importe quelle forme géométrique 2D sur n'importe quelle fenêtre windows en OpenGl ou avec WIN32
++

Commentaire de Funto66 le 31/01/2004 01:31:31

Ah ok, pas mal !
Bonne chance pour ton projet ;)

Commentaire de OriOn le 31/01/2004 02:42:34 administrateur CS

et pourquoi pas le mettre sur cppfrance.com plutôt que sur source forge ? :)

Commentaire de Hellaynnea le 31/01/2004 02:50:26

eh bien rien n'exclu le fait que je puisse le mettre également sur ccpfrance
++

Commentaire de Kaid le 31/01/2004 17:46:24

OriOn &gt;&gt; SourceForge est bien plus pro et offre une bien meilleure exposition que le labo Cppfrance (qui est d'ailleurs "en cours de rénovation").  

Commentaire de OriOn le 01/02/2004 11:13:19 administrateur CS

La prochaine version du labo risque de vous plaire :) patience !

Commentaire de Kaid le 01/02/2004 11:23:52

OriOn &gt;&gt; La nouvelle version du labo peut effectivement être aussi bien que SourceForge (en étant basée sur Gforge par exemple) ou même mieux, mais l'exposition restera quand même en dessous de Sourceforge.

J'espère que la nouvelle version restera simple d'accès pour ceux qui veulent se lancer dans un projet commun.

Commentaire de Hellaynnea le 01/02/2004 11:51:37

Je te remercie kaid pour tes remarques, en effet je trouve source forge tres pro, j'aime beaucoup source forge malheureusement il ya plein de gens qui ne sont la que pour repomper des bouts de code sans mm les regarder et c'est dommage :( mm si bien sur il ya des gens qui aiment les étudier. Sinon Kaid j'aime bien ce que tu fais d'ailleurs dans mon prog j'ai utilisé ta lib de décodage jpeg pour afficher un plan de fond thx :) (le proj est sous gpl)
++

Commentaire de Hellaynnea le 01/02/2004 11:53:10

oups je voulais dire cppfrance (le deuxieme "source forge" dans mon text)
dsl

Commentaire de Kaid le 01/02/2004 12:21:29

Hellaynnea &gt;&gt; De rien. Pour l'affichage d'un fichier JPEG, je n'ai pas fais une librarie de décodage JPEG, j'utilise simplement la librairie JPEG de l'IJG.

Commentaire de Hellaynnea le 01/02/2004 12:23:48

oui independent jpeg j'ai étudié ta source (nottament pour manipuler les HBITMAP directement (dans un autre projet))
++

Commentaire de Hellaynnea le 08/02/2004 17:35:05

je viens de mettre à jour ma source, il manquait juste un test lorsque la position pour la lecture du buffer était = à -1 ce qui permet de revenir en arrière pour la lecture avec l'automate, lorsqu'on vient de lire une ligne du fichier (donc lorsque pos = 0, le retour en arrière fait pos-- !!)

Commentaire de psykocrash le 08/03/2005 22:35:16

Bonjour,
j'ai téléchargé ton code source et j'avou que j'ai un peut de mal a comprendre le fonctionnementde la classe CXmlDocument... est ce que tu pourrais mettre un exemple simple d'utilisation stp ?
merci

Commentaire de Hellaynnea le 08/03/2005 22:38:48

Salut,
tu as un exemple dans la classe CModule.
++

Commentaire de azkab le 09/04/2005 16:06:09

bonjour,
j'aimerai bien savoir si ton parseur pourrait bien m aider.
voila moi ce ke j ai c est un fichier xml qui contient des informations sur la disposition des arbres dans une portion d'une ville. je veux créer un fichier(txt) qui contient juste les cordonnées des arbres. pour cela je dois parser mon fichier xml, chercher les cordonnes et puis les ecrire dans le fichier(txt). moi je suis pas un pro en programmation, mais je dois le faire absolument.
ton parser pourrait m aider? si oui comment?

merci infiniment
yo

Commentaire de Hellaynnea le 09/04/2005 20:04:08

Bonjour,
mon parseur permet de faire des fichiers Xml maison, je ne pesne pas qu'il soit réellement indiqué pour des fichiers Xml externes. Si tes fichiers xml sont créés et utilisés par toi ca peut aller, sinon mon parseur n'est pas fait pour. Je te conseille pour la deuxième solution d'utiliser des lib xml.
++

Commentaire de only_rush le 17/05/2005 22:01:21

Bonjour!

j'ai également besoin d'un parser pour mon projet... j'étais parti sur l'idée d'utiliser la librairie de TinyXml...mais je te restitue le contexte de mon développement : je dois développer un système de sauvegarde pour stocker les paramètres d'une carte pci génératrice de signaux, et afficher ensuite ces paramètres sauvegardés grâces à Xml (et xslt)... Qu'en penses-tu? ton parser maison pourrait-il m'éviter la librairie TinyXml (je suis sous Visual c++ 6.0 pour info et elle ne m'inspire pas trop)... je te remercie d'avance pour ta réponse, en attendant je vais étudier ton code Hellayenea. +++ et bonne continuation!

Commentaire de Hellaynnea le 17/05/2005 22:22:28

Salut,

en fait ca dépend :
Si tu utilises XML pour la sauvegarde, tu peux utiliser mon parseur allegé, en 30 min tu as fini.
Si tu utilises pour l'affichage, je l'ai pas fait pour, donc il vaudrait mieux que tu formattes tes données toi même.
Si ca t'intéresse jt'envoie un fichier de conf fait en 30min en 1 classe.

(P.S. : c'est hellaynnea :)

Commentaire de Hellaynnea le 17/05/2005 22:27:27

en fait ce même fichier est déjà dans le zip :)

Commentaire de only_rush le 18/05/2005 20:34:55

merci d'avoir repondu si vite...
j'aimerai utliser les deux : sauvegarder avec la disposition structurée propre a xml et les afficher ensuite grace a ma dtd et mon fichier xslt qui resteraient statiques (ce qui marche déja, j'arrive  àgénérer mon affichage!)...
Mon idée au départ était de regnérer via le code le fichier Xml (root,balises filles et attributs), modifier le contenu de mes attributs selon la sauvegarde de l'utlisateur et enfin les afficher grâce au fichiers précités...je vais essayer de le parser avec ton code je te tien au courant :)


pour te donner une idée plus précise c'est un extrait de code abrégé de mon fichier le reste du document étant à l'identique au niveau de la structure...

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="E:\Carte1710_Bis.xsl"?>
<!DOCTYPE APCI1710 SYSTEM "cartetestEssai.dtd">
<APCI1710>
<FirmwareVersion valeur="">#PCDATA</FirmwareVersion>
<SIGNAL_A>
<ID_A valeur="">#PCDATA</ID_A>
<CommandRegister_A>
<Operating_Mode_A valeur="BlaBLaBLa">#PCDATA</Operating_Mode_A>
<StopMode_A valeur="BlaBlaBla">#PCDATA</StopMode_A>
                </CommandRegister_A>
         </SIGNAL_A>

Commentaire de Hellaynnea le 18/05/2005 20:39:15

salut,
mon parseur ne gère pas les headers xml, sinon il manque la balise de fin de fichier </APCI1710>
Par ailleurs, il ne gère que les lignes xml et non les contenus bruts :
il gère : <x [...]><y [...]></y></x>
mais pas : <x [...]>YYYY</x>

Donc tu auras un peu de mal a l'utiliser, c'est pour ca que j'ai dit que c'était du xml light, ca me suffisait amplement pour mes fichiers de conf.

Commentaire de only_rush le 18/05/2005 20:54:34

oki merci de me prévenir (pour la balise de fin j'ai remarqué après c'est simplement un erreur de frappe désolé)
pour l'instant ce que j'ai fait c'est parcourir mon fichier xml comme s'il s'agissait d'un fichier texte banal avec une fonction en c++ qui me balaye chaque ligne jusqu'a atteindre le caractère "" (le contenu de l'attribut)...pour le chargement ca marche mais c'est très limité. Ensuite si tu as plusieurs attributs (je suis dans ce cas) dans une ligne ca devient vite n'importe quoi dans mon code... et niveau temps d'éxecution ca consomme pas mal de ressources pour un fichier aussi petit. C'est pour cela que je recherchais un parser. As tu utiliser des librairies comme Xerces ou tinyxml ou encore msxml? je suis ouvert à toutes suggestions. Merci d'avance!!

++ ;-)

Commentaire de Hellaynnea le 18/05/2005 20:58:20

non j'ai tout fait a la mano, from scratch en utilisant un automate.
++

Commentaire de only_rush le 18/05/2005 21:07:31

en tout cas bravo pour ton code je viens de tester pour un petit fichier en suivant tes instructions ca marche nikel et c'est plutot rapide chez moi!! je vais essayer de faire mon propre parser à la limite si c'est pas trop dur, si j'arrive a quelque chose de concluant... merci pour tout et désolé pour le double post d'avant encore (j'espère qu'un admin passera nettoyer :)).
je te donne des news des que ca a donné quelque chose.
+++

Commentaire de Hellaynnea le 18/05/2005 21:23:44

ok, no prob.
++

Commentaire de azertyasv le 19/03/2006 16:57:58

Bonjour,
Comment je peux faire pour accéder à votre code source sans payer?
Est ce ke je pourrais avoir les instructions principales?
merci davance

Commentaire de BruNews le 19/03/2006 17:00:33 administrateur CS

Le lien "Télécharger le ZIP" n'est pas mis assez gros ???

Commentaire de azertyasv le 19/03/2006 19:38:19

Le lienn est payant!!!???

Commentaire de BruNews le 19/03/2006 20:11:30 administrateur CS

GRATUIT comme quasiment tout ici (à part moi...).

Commentaire de azertyasv le 20/03/2006 20:11:33

Merci je vais regarder ce parser.
As tu un main et un fichier xml pour étudier les méthodes?
J'ai besoin de charger et de recupérer des variables à partir du fichier xml?
balise type  <poste de travail    nom="" ref=""></poste de travail>
Merci d'avance

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales