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]'

Répondre à