C++ et parser XML [RESOLU]

C++ et parser XML [RESOLU] - C++ - Programmation

Marsh Posté le 27-05-2005 à 11:07:49    

Voilà, je me lance dans le parsing de fichier XML en C++ pour mon appli, enfin la traduction de mon appli de l'Ada en C++.
Jusqu'à présent je placé mes données dans des fichiers types csv, où les données sont séparées par des ';'.
 
Cependant il serait préfèrable qu'elle soit en XML parce que cela pourrait être plus confortable a consulter hors-application.
 
Donc quelqu'un a-t-il déjà utilisé un parser XML, ou mieux XERCES...
et ainsi me donner quelques conseils ?
je me penche sur le sujet depuis 3 jours... et je comprends pas tout.
 
Une chose est sure je pars sur du SAX plutot que du DOM.... enfin c'est ma première impression.  
La gestion evenementielle serait préférable, vu qu'il s'agit en fait juste de récuperer les données stockées au format XML
un chti exemple de ce que j'ai ....

Code :
  1. <CSU pack="P_DOSEUR" name="COMMANDER_DOSEUR">
  2. <var type="IN" name="POSITION" type="P_DOSEUR_TYPES.T_PAS" />
  3. <var type="OUT" name="ETAT" type="P_SURVEILLANCE_TYPES.T_RESULTAT" />
  4. </CSU>


A la fin je stock dans un tableau de record défini comme suit :

Code :
  1. typedef struct t_Data
  2.   {
  3.     //  Nom de la variable
  4.     wxString Nomvar;
  5.     //  Type de la variable
  6.     wxString Typevar;
  7.     //  Variable en entree ?
  8.     bool Invar;
  9.     //  Variable en sortie ?
  10.     bool Outvar;
  11.   };


 
Je ne demande pas à ce qu'on me fasse le boulot... juste des pistes sur comment utilisé le parser ou même des exemples.
 
Pour info je suis sous win2000, avec devcpp 4.9.9.2 + wxWidgets 2.6.0 et Xerces 2.5.2
 
Merci de votre aide...


Message édité par babar9160 le 31-05-2005 à 13:27:13
Reply

Marsh Posté le 27-05-2005 à 11:07:49   

Reply

Marsh Posté le 28-05-2005 à 10:59:25    

Dans le cadre d'un mini projet, je me suis développé ma propre librairie pour manipuler du flux/fichier XML.
 
MinXL

Reply

Marsh Posté le 30-05-2005 à 08:51:19    

Merci beaucoup ;) je vois si ça peut m'aider... je pense que oui... mais bon je regarde et je te tiens au courant

Reply

Marsh Posté le 30-05-2005 à 10:42:31    

ça me parait bon pour moi, cependant un soucis apparait...
il est très courant dans mon arborescence XML d'avoir :

Code :
  1. <bloc name="NOM_DU_BLOC">
  2.    <range name="PREMIER_RANGE>
  3.       <min>x</min>
  4.       <max>y</max>
  5.    </range>
  6.    <range name="DEUXIEME_RANGE>
  7.       <min>x2</min>
  8.       <max>y2</max>
  9.    </range>
  10. ......
  11. ..... // N range d'affilés
  12. </bloc>


Le problème vient du fait que le parser n'accepte pas plus de 2 ranges, enfin pas plus de 2 éléments en gros...
 
Il y-a-t'il un moyen de contourner ce soucis ?
 
Merci d'avance...
 
PS: dans l'exemple il s'agit de range, mais, j'ai aussi N enums, M records...... donc ça peut être génant...

Reply

Marsh Posté le 30-05-2005 à 11:13:14    

Le parser de MinXL accepte ce genre de fichier XML.

Reply

Marsh Posté le 30-05-2005 à 11:15:55    

pourtant ça bloque :( je comprens pas trop...
je fais comme dans l'exemple :

Code :
  1. ifstream is( "configuration_type.xml" );
  2.   t_xml_node n1;
  3.   n1.parse( is );


et il me met "abnormal program termination"
mais quand je ne laisse que deux déclarations, là ça passe.
C'est pout ça que je ne comprens pas.

Reply

Marsh Posté le 30-05-2005 à 11:19:00    

Interessant. Peux tu m'envoyer ton fichier XML ?

Reply

Marsh Posté le 31-05-2005 à 10:29:39    

Bon le problème est donc résolu, merci Stroustrup Jr...
 
Et MinXL est vraiment nickel... Si vous avez des petits projets qui ont besoin d'un parser XML assez rapide mais surtout sans prise de tête pour comprendre comment le lancer, allez-y.
 
Ce n'est pas de la pub... juste un conseil ;)

Reply

Sujets relatifs:

Leave a Replay

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