Xml-RPC

electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007 - 3 avril 2007 à 05:44
electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007 - 11 avril 2007 à 21:41
   Bonjour,
    je veux realiser un protocole d'appelle de fonctions a distance, c-a-d une machine cliente qui envoit a un serveur une fonctions avec ses parametres pour avoir le resultat par la suite.
on m'a alors conseillé d'utiliser xml comme langage d'interface, mais je vois pas trop comment integrer xml dans du code C++ ni son utilité.
alors si qlq un a des informations ou mieux encore un exemple ça serait le bienvenu.
merci

23 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 20:15
Salut:

un document XML est utilisé pour échanger des données entre des applications se trouvant éventuellement sur deux plateformes différentes. Il compense les défauts des fichiers de configuration et de plus c'est plus lisible.

Tu peux Stocker des données dans un fichier XML, que tu peux par la suite les récupérer dans ton programme via un parseur XML.

Exemple de parseur XML: tinyXML, LibXML, Xerces, ...

Pour plus d'informations voir:

http://c.developpez.com/bibliotheques/

et bien sûr google.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
3 avril 2007 à 20:31
Salut:

exemple:

<?xml version="1.0" encoding="UTF-8"?>

   
       <name>Promgarmmez en Java</name>
       Claude Delannoy
       <year>2007</year>
   
   
   

       // ...

   

   

       // ...

   


 

Bon en Java on fait une chose de ce type:

... getNode ("name").getValue ();

Pour obtenir la valeur associé à la balise "name" du noeud courant.

C'est prtiquement la même en C/C++


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007
3 avril 2007 à 22:58
moi j'ai besoin d'envoyer des series de données formatées, des noms des fonctions avec les parametres et leurs types.
le probleme c du coté du recepteur je ne sais pas comment extraire ces données, comment recuperer le nom de la fonction, ses parametres ect...
est ce qu'il y aurait des fonctions dédiées a extraire du contenu xml, ou il faut que je le fasse moi meme, c-a-d que je cherche les balises qui m'importe et que j'extrais les données qu'elles contiennent.
et merci bcp
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
4 avril 2007 à 09:36
Salut:

L'avantage de XML est que tu peux choisir librement les noms de tes balises.
Je te conseille de voir un cours XML, sois sûr que tu vas tout comprendre.

J'étais comme toi, je disais à quoi servait cet XML?

XML permet l'échange de données entre deux applications se trouvant éventuellement sur deux plateformes différentes aisément.

Tu peux donner un sens à tes données un autre exemple:

<?xml version="1.0"?>
<rpc-service>
    <function>
       <name>factorielle</name>
      
          <type>int</type>
          <value>7</value>
      

    <function>

</rpc-service>

Il s'agit de modéliser tes données à l'intérieur d'un fichier XML.

L'étape suivante est d'extraire ces données via un parseur XML. (tinyXML, ...)

Jettes un coup d'oeil, c'est simple.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007
4 avril 2007 à 09:53
ok, merci beaucoup, cette exemple m'aide mieux a comprendre l'échange qui se fait.
pour ce qui est de l'extraction des données j'ai vu qu'il y a une classe XMLDocument qui propose des fonctions dans ce sens, et je vais essayer de voir le parser que tu m'as proposé tinyXML, s'il est plus simple a manipuler et a integrer dans mon code.
merci encore
0
cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
5 avril 2007 à 19:51
Ce que tu veux faire ressemble beaucoup à du SOAP...

Jettes y un coup d'oeil avant de réinventer la roue !
0
electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007
9 avril 2007 à 21:40
Bonjour,


j'ai encore une question a propos de tinyxml. dans les exemples que je trouve sur le net je vois qu'il extrait tjrs les données d'un fichier xml, est qu'il serait possible d'extraire les données d'un buffer? si oui vous pourriez me donner un exmple svp.


merci
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
9 avril 2007 à 22:13
Salut:

Comment ça d'un buffer? Franchement, je n'ai pas bien compris ta question.

tinyXML a pour rôle de parser un fichier XML.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007
9 avril 2007 à 22:16
comme je l'ai dit avant, je dois envoyer des données formatées en xml à un server qui va les traiter. alors ces données seront stockées dans buffer et non pas dans un fichier, puisqu'il fait un recvfrom, et met ça dans son buffer de reception.
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
9 avril 2007 à 22:25
Salut:

Si je ne me trompes pas (et je vais essayer de voir ce problème avec mes amis) tu vas lire le contenu du fichier XML sans tinyXML et le mettre dans un buffer pour l'envoyer au serveur qui peut restitutuer le fichier XML.

Je vais m'en assurer du processus.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007
9 avril 2007 à 22:30
non, en fait je vais pas utiliser de fichier pour ça. je vais construire un buffer avec des données formatées en xml, et ça sans utiliser le tiny, puis je vais envoyer ça au server qui s'occupera d'extraire ces données, sans recours a un fichier non plus. tout le traitement va se faire sur des données qui sont en mémoire RAM, par ce que en fait j'ai pas besoin de sauvegarder ces données, le tout se fera sur la mémoire RAM.
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
9 avril 2007 à 22:34
Salut:

Franchement, je ne sais pas si c'est possible pour les streams.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007
9 avril 2007 à 22:38
j'aurai une autre question si tu le permets. j'ai trouvé cet exemple sur le site de msdn:

usingnamespace System;
usingnamespace System::IO;
usingnamespace System::Xml;

int main()
{
   XmlDocument^ doc = gcnew XmlDocument;
   doc->LoadXml( ""
   "<title>Pride And Prejudice</title>"
   "19.95

"
   "" );
   XmlNode^ root = doc->FirstChild;
  
   //Display the contents of the child nodes.
   if ( root->HasChildNodes )
   {
      for ( int i = 0; i < root->ChildNodes->Count; i++ )
      {
         Console::WriteLine( root->ChildNodes[ i ]->InnerText );
      }
   }
}

apparemment c'est du .net framwork si je me trompe pas, le probleme c que je suis pas familier avec le .net et je ne sais pas qu'il sorte de projet faut choisir pour executer cet exemple !!!
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
9 avril 2007 à 22:39
Salut:

Quel type d'application tu développes (Web, Desktop)?


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007
9 avril 2007 à 22:40
une application console win32
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
9 avril 2007 à 22:44
Salut:

Le code que tu as mis c'est du C#, il travailles en mode console.


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007
9 avril 2007 à 22:48
mais quand j'essaye de l'excuter avec visual 2003 ça me sort plein d'erreur, je sais pas est ce qu'il faut faire qlq chose de particulier pour que ça marche, ou il faut choisir un type de projet spécial pour le C# ??
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
9 avril 2007 à 22:50
Salut:

J'ai une petite idée en C#.

changes usingnamespace ------> using namespace


________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007
10 avril 2007 à 00:50
ok je vais essayer ça, merci pour ton soutien
0
electroonn Messages postés 49 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 27 novembre 2007
11 avril 2007 à 03:33
bonjour,
j'ai une autre question stp. pour le transfert des données j'utilise cette sequence xml:
<function name="sinus" paramtype="int" param="1"/>
mais parfois je dois envoyer un tableau qui contient plusieurs element, et je ne sais pas comment générer le code xml correspondant sachant que le nombre d'élement dans le tableau est a determiner par l'utlisateur.
merci
0
Rejoignez-nous