[C/C++]Un mini parser XML ?

Un mini parser XML ? [C/C++] - C++ - Programmation

Marsh Posté le 28-08-2002 à 07:47:04    

Salut à vous forumeur et forumeuses (si vous êtes blonde à forte poitrine ça m'intéresse aussi :o))
Je m'intéresse vaguement à xml, juste histoire d'être au courant vu qu'on en parle partout et que de plus en plus d'applications l'utilisent.
Et justement, je trouve que pour créer des fichiers de config c'est pas mal du tout (une bonne alternative aux fichiers ini)
Y'a déjà quelques applis qui le font.
Alors je me demandais s'il existait pas une petite bibli (gratuite, si possible en C) toute simple qui permette de récupérer facilement les divers champs dans un fichier xml simple d'une balise donnée, ou un truc du genre (une sorte d'alternative aux BD).
J'ai un peu regardé mais j'ai pas vraiment trouvé mon bonheur.
Thanks.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 28-08-2002 à 07:47:04   

Reply

Marsh Posté le 28-08-2002 à 09:13:38    

Il parait que Zion a fait un parser XML, mais je t'avouerais que je n'en sais guère plus... :(
Repasse cet aprèm, il sera réveillé et pourra te fournir plus de renseignements [:ddr555]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-08-2002 à 09:15:06    

Sinon, j'ai trouvé ça sur SourceForge, si ça peut t'aider...
 
http://sourceforge.net/projects/expat/


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-08-2002 à 09:17:36    

HelloWorld a écrit a écrit :

 
Alors je me demandais s'il existait pas une petite bibli (gratuite, si possible en C) toute simple qui permette de récupérer facilement les divers champs dans un fichier xml simple d'une balise donnée, ou un truc du genre (une sorte d'alternative aux BD).
J'ai un peu regardé mais j'ai pas vraiment trouvé mon bonheur.
Thanks.




 
T'as pas du vraiment bien regarder...
Regarde dans les travaux du groupe Apache, avec notament la librairie Xerces qui est TRES utilisée par énormément de gens pour parser à peu près n'importe quel type de document ?xml.

Reply

Marsh Posté le 28-08-2002 à 09:30:38    

tu as aussi libxml http://xmlsoft.org/ meme si ça risque d'en faire beaucoup plus surtout si c juste pour faire un fichier de config...
 
le xml c'est "juste" un fichier texte alors tu peux toujours te construire une moulinette qui fera juste le travail souhaité plutot que d'utiliser une usine à gaz  :D  
 
et pis bon si c'est pour faire des fichiers ini, xml c'est peut-etre trop aussi  :D  
 
pour ceux qui travaille sous delphi il y a ça http://www.skch.net/projects/xml_data.html c'est simple et flexible.

Reply

Marsh Posté le 28-08-2002 à 09:47:34    

Harkonnen a écrit a écrit :

Il parait que Zion a fait un parser XML, mais je t'avouerais que je n'en sais guère plus... :(




 
oui mais il l'a fait en Pascal (pour Delphi), donc à moins d'utiliser C++Builder ça n'ira pas :/
l'avantage de son parser est la vitesse (on a fait des tests : il est plus rapide qu'un parser commercial qui était déjà très rapide)

Reply

Marsh Posté le 28-08-2002 à 12:18:26    

Harkonnen a écrit a écrit :

Sinon, j'ai trouvé ça sur SourceForge, si ça peut t'aider...
 
http://sourceforge.net/projects/expat/




C'est meme ce qu'il y a de mieux pour son cas precis (parseur rapide et leger).
Note1: expat n'est pas un validateur, et si il a besoin de validation pour une DTD, il faudra qu'il ajoute le support adequat [je l'ai pas fait, mais j'ai des potes qui l'ont fait].
 
Note2: Expat supporte quelques encodings: ASCII, Isolatin1, UTF-8 et UTF-16. Si on s'attend a des fichiers avec des jeux de caractere exotique, il faudra la aussi ajouter le support ad-hoc (utilisant icu par exemple).
 
Note3: expat est un parseur de base, tres rapide et efficace, mais il n'a pas de support natif pour les XML schemas [il en a deja pas pour les DTD, donc a fortiori pour les schemas...]
 
Note4: expat n'a pas de support natif pour acceder aux url distantes. Si il y a des fichiers distants, il faut ajouter le support là aussi (avec libcurl par exemple).
 
Par contre, si tout ce qui l'interesse, c'est du XML Well-Formed, pour parser des fichiers disques, avec un encodage usuel, alors, il lui suffit de recompiler expat en virant le support pour parser les DTD, et il aura ce qu'il y a de mieux (leger et rapide) sur le marché. En plus, le code de expat est relativement comprehensible.
 
A+,


Message édité par gilou le 28-08-2002 à 12:20:25

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 28-08-2002 à 12:30:40    

SoWhatIn22 a écrit a écrit :

 
 
T'as pas du vraiment bien regarder...
Regarde dans les travaux du groupe Apache, avec notament la librairie Xerces qui est TRES utilisée par énormément de gens pour parser à peu près n'importe quel type de document ?xml.




Oui, mais xerces c'est un gros parser en C++, pas un petit parseur leger en C.
Xerces, c'est utile des que tu as besoin de toutes les fonctionalités du XML (schemas par exemple).
En plus, l'interface DOM de xerces est bien, mais les interfaces sax et sax2 de xerces ont quelques defauts [a la base ce sont des defauts de SAX. L'interface native de expat est meilleure].
Je connais assez bien expat (leur ai soumis un patch qu'ils ont d'ailleurs pas integré, faudra que je leur file un test case pour qu'ils voient le probleme, assez tordu) et Xerces (ai modifié pas mal de classes de l'interface SAX afin d'avoir un peu plus de controle, pour un produit), et leurs domaines d'utilité sont assez differents.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 28-08-2002 à 15:35:31    

Harkonnen a écrit a écrit :

Il parait que Zion a fait un parser XML, mais je t'avouerais que je n'en sais guère plus... :(
Repasse cet aprèm, il sera réveillé et pourra te fournir plus de renseignements [:ddr555]




 
Ouai mais comme l'a expliqué antp, mon parser est en pascal... Il est simplifié à mort (genre pas de cdata, pas de namespace, etc, etc), mais du coup le parser est extrèmement rapide, j'en ai pas encore trouvé un seul qui va plus vite en fait  :ange:  
 
Mais bon, la vitesse à un prix, et de plus c'est du pascal donc tu sauras pas en faire grand chose. (Quoique, tu peux le convertir en C++ ca doit pas être dur hein).
 
http://jvcl.sourceforge.net  
 
 :hello:


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 28-08-2002 à 17:27:09    

Merci à tous pour vos réponses.
Je suis tombé sur le lien Apache mais j'ai pas cliké. Ca m'a fait peur (grosse bibli).
Moi je veut un tout petit truc, qui se fout des namespaces, des DTD, bref qui n'a en fait pas grand chose a voir avec le xml, si ce n'est juste récupérer les valeurs de certaines balises.
par exemple, pour dresser une liste de logiciels :

Code :
  1. <logiciel>
  2. <nom>Dev C++ 4</nom>
  3. <categorie>Programmation</categorie>
  4. <description>Environnement de développement ...</description>
  5. <emplacement>Prog\DevC++</emplacement>
  6. </logiciel>


Ca va pas plus loin que ca. Pour servir d'alternative aux fichiers ini aussi ... et aux bases de données.
Avant de coder moi même un truc tout con qui se charge de récupérer dans un fichier un champ entouré par une balise donnée, je voulais savoir si quelqu'un n'avait pas déjà fait ça (utiliser un xml a la place d'un fichier ini) et avec quoi.
Je vais suivre vos pistes et je verai ensuite.
Thanks.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 28-08-2002 à 17:27:09   

Reply

Marsh Posté le 28-08-2002 à 22:06:46    

Pour windows y a MSXML de microsoft.

Reply

Marsh Posté le 29-08-2002 à 01:47:34    

Verdoux a écrit a écrit :

Pour windows y a MSXML de microsoft.




Il a une interface SAX?
Parce que du DOM juste pour ce qu'il veut fairer, c'est chasser les mouches avec un marteau pilon. (Pis il a plein de Pbs le parser de M$, des que tu veux faire des trucs complexes).
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed