On Tue, Nov 09, 2004 at 08:49:17AM +0100, Delaunay Christophe wrote:
> Bonjour tous,
Slt Chris,
>
> Avant de poser cette question, j'ai vainement cherch� dans des forums plus
> d�di�s programmation mais peut-�tre pas les bons. Je sais bien que ma
> question n'a pas grand chose � faire ici et j'en suis d�sol� mais je ne sais
> pas o� trouver ma r�ponse alors si vous voulez bien me sugg�rer une meilleure
> id�e je suis preneur.
>
> Voil�. J'aimerais faire un petit prog dont l'entr�e est du XML qu'il re�oit �
> travers une connexion r�seau.
>
> Les deux pris ind�pendamment l'un de l'autre, je sais faire parce que, pour
> recevoir quelque chose d'une connexion r�seau, on ouvre un socket et apr�s,
> on peut facilement lire dedans, du moins au bas niveau.
>
> Pour r�cup�rer du XML pr�t � �tre analys�, j'utilise un composant de la
> librairie XML de gnome : le XMLTextReader de libxml2.
>
> C'est une interface C qui permet facilement d'ouvrir un fichier cens�
> contenir du XML et ensuite, r�cup�rer un � un tous les �l�ments qu'il
> contient : entit�s, attributs, ...
>
> L'avantage du xmlTextReader est qu'on n'a pas besoin de parcourir tout le
> fichier avant de commencer � l'analyser. La doc dit en substance que cette
> interface a �t� ajout�e � libxml2 pour qu'on puisse traiter du XML en tr�s
> gros volume, voir stream�.
>
> Donc, d'un c�t�, j'ai mon socket et de l'autre, mon xmlTextReader. Et mon
> probl�me, c'est que je ne sais pas s'il y a un autre moyen de l'initialiser
> qu'en utilisant xmlNewTextReaderFilename(). En effet, cette op�ration cr�e un
> pointeur vers un xmlTextReader pr�t � lire du XML dans un fichier et moi, ce
> que je voudrais, c'est cr�er un pointeur vers un xmlTextReader pr�t � lire
> sur mon socket.
>
> Savez-vous o� je pourrais trouver des exemples permettant de faire �a ?
Je ne connais pas bien la libxml2 (car tr�s peu utilis�). Cependant Unix
en lui-m�me peux te permettre ce que tu veux faire, en cr�ant un fifo
par exemple, ou encore une socket locale. Pour le fifo, �a donnerait �a
en algo :
- Initialisation de ta socket r�seau, connexion au serveur;
- Cr�ation du fifo;
- Un fork :
- Dans le p�re, on balance le contenu de la socket (� coup de
select, read, et write), dans le fifo.
- C�t� fils, on dit � la libxml de lire le fifo comme fichier
d'entr�e.
Une fois que le p�re a tout lu sur la socket, il fait un waitpid() de
son fils. Le fils quand � lui peut poursuivre son traitement.
Si tu fais ton dev sous Linux, et sous un kernel 2.6, tu peux aussi
utiliser les Threads pour �viter deux processus. Un thread lirait la
socket et remplirait le fifo, et l'autre lirait le fifo via la libxml.
En esp�rant que �a t'aide un peu...
>
> Merci infiniment. Bon apr�s-midi. @+ Chris
> _______________________________________________
> Liste de diffusion CarrefourBLinuX
> [EMAIL PROTECTED]
> http://lists.freearchive.org/mailman/listinfo/carrefourblinux
> Signets : http://fr.groups.yahoo.com/group/carrefourblinux/links/
> Archives : http://lists.freearchive.org/pipermail//carrefourblinux
> Anciennes archives (Yahoogroupes) :
> http://fr.groups.yahoo.com/group/carrefourblinux/messages
> Pour s'inscire par courriel :
> 'mailto:[EMAIL PROTECTED]'
> Pour se desinscrire par courriel :
> 'mailto:[EMAIL PROTECTED]'
--
+-------------------+
| Yannick PLASSIARD |
| [EMAIL PROTECTED] |
| +33 (0)622382501 |
| Www.Mistigri.Org |
+-------------------+
_______________________________________________
Liste de diffusion CarrefourBLinuX
[EMAIL PROTECTED]
http://lists.freearchive.org/mailman/listinfo/carrefourblinux
Signets : http://fr.groups.yahoo.com/group/carrefourblinux/links/
Archives : http://lists.freearchive.org/pipermail//carrefourblinux
Anciennes archives (Yahoogroupes) :
http://fr.groups.yahoo.com/group/carrefourblinux/messages
Pour s'inscire par courriel :
'mailto:[EMAIL PROTECTED]'
Pour se desinscrire par courriel :
'mailto:[EMAIL PROTECTED]'