Retourner aux forums || Retourner au forum Programmation.c++

Programmation.c++ : traitement de flux xml

Posté par matthieu bollot (page perso, ) le 21 novembre 2006
0
Bonjour,
j'ai un programme qui envoie des données au format xml du genre :


<noeud>
<branche>
<feuille1 x=sdf er=sdf sdgffg=yut/>
<feuille2 x=s fd=sgt defrg=ssdg/>
</branche>
<branche>
<f..../>
<f.../>
</branche>
...
</noeud>
</blockquote>

Mon programme envoie donc des "noeud" en continu selon la pluie et le beau temps et je souhaite traiter ces données le plus proprement possible, sans perte d'information, traitement instantanné, facile à programmer (et qu'on me serve une limonade par la même occasion :p )

En version pré-alpha, j'écrivais tout dans un fichier et tous les x noeuds, j'arrêtais le programme et je le relançais sur un autre fichier avec en parallèle le traitement du premier fichier.
Mais dans ce cas, le prog s'arrête puis redémarre (perte d'information) et ce n'est pas instantanné.

Après, j'ai pensé à faire une redirection (pipe) avec des cin en boucle ca m'obligera à forker pour que quand il lit le il traite d'un côté et continu de lire de l'autre, vu que je connais pas concrètement le forkage, ce serait un bon outil pédagogique mais j'ai un soucis, les délimiteurs sont \n\b\t et je sais pas à quel niveau (changer $IFS ne résoud pas mon problème et un cin par défaut prend juste \n)

Donc voilà, si vous savez d'ou vient mon problème pour le \n je suis preneur et si vous avez des meilleures idées c'est encore mieux.

P.S. : j'avais trouvé une librairie qui me semblait bien pour traiter du xml mais il nécessite un fichier, vous avez de bonnes librairies à proposer ou je m'en fais une spécifique à mon problème ?

P.P.S : je galère à mettre des inférieurs et supérieurs donc si vous voyez > et < bein vous comprendrez ;)

> Lire le message (2 commentaires, moyenne: 1).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

perte d'un noeud

Posté par matthieu bollot (page perso, ) le 21/11/2006 à 22:57. (lien). Évalué à 1.

s/pour que quand il lit le il traite/pour que quand il lit le <noeud> il traite/

Parser SAX

Posté par Frédéric Desmoulins (page perso, ) le 22/11/2006 à 08:42. (lien). Évalué à 1.

Un parser SAX semble parfaitement adapté dans ton cas. Je ne sais pas ce qui existe comme bibliotheque SAX en C++ mais en Java il y en a plusieurs dont (au moins) une portée en C++: http://xml.apache.org/xerces-c/. Un parser lit les données à partir d'un flux entrant (fichier, stdin, socket...).

Bonne chance.

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c++