;) Oui
Version imprimable
Ba crotte !!
Bon je te montre mon dossier "Projet" ... J'ai bien mon programme "nouveparser "
an@an-laptop:~/Projet$ ls
autre nouveparser.c
nouveparser projet.dtd projet.xml
Et la je te montre 4 tentatives : ECHEC TOTAL !!
an@an-laptop:~/Projet$ ./nouveparser /Projet/projet.xml
Usage : expat <chemin fichier>an@an-laptop:~/Projet$
an@an-laptop:~/Projet$ ./nouveparser /Projet/projet
Usage : expat <chemin fichier>an@an-laptop:~/Projet$
an@andrieux-laptop:~/Projet$ ./nouveparser ~/Projet/projet
Usage : expat <chemin fichier>an@an-laptop:~/Projet$
an@andrieux-laptop:~/Projet$ ./nouveparser ~/Projet/projet.xml
Usage : expat <chemin fichier>an@an-laptop:~/Projet$
Ce que je trouve bizarre, c'est que je travaille deja dans Projet .. Je devais mettre en chemin juste "projet.xml" ...
D'ailleur je mets l'extension de mon fichier a parser ou pas ?
Merci de tes reponses
Je crois que c'est perdu d'avance avec moi ...
Ca ne marche pas avec 1 ni avec 2
erreur de débutant j'avais pas compiler ...
Merci infiniment..
J'aimerais qu'on laisse ce poste ouvert si j'ai des questions sur le code maintenant.
Petit souci :Mon fichier est bien parsé, pas d'erreur.Citation:
an@an-laptop:~/Projet$ ./nouveparser ./projet.xml
[configuration]={}
[protocole]={nom = ospf, }
[connexion]={type = filaire, }
[routeurs]={nbr = 6, }
[routeur]={id = A, alias = tata, }
[routeur]={id = B, alias = tete, }
[routeur]={id = C, alias = titi, }
[routeur]={id = D, alias = toto, }
[routeur]={id = E, alias = tutu, }
[routeur]={id = F, alias = tyty, }
[liens]={nbl = 5, }
[lien]={src = A, dst = B, cout = 3, }
[lien]={src = A, dst = C, cout = 4, }
[lien]={src = C, dst = D, cout = 5, }
[lien]={src = D, dst = E, cout = 6, }
[lien]={src = E, dst = F, cout = 7, }
Error at line 24:
parsing finished
Mais j'ai une erreur ligne 24
J'ai une erreur au niveau de la variable i.
Voila pour le bout de code. Il aime la l'initialisationCode:
1
2
3
4
5
6
7
8
9
10
11 void XMLCALL debutElement (void *userdata, const char * el, const char** attr){ int i = 0; fprintf(stdout,"[%s]={",el); while(*(attr + i) != NULL){ fprintf(stdout,"%s = %s, ",attr[i],attr[i+1]); i+=2; } fprintf(stdout,"}\n"); }
Change la boucle while en for. Ca devrait marcher !!!
Je mets :Citation:
Code:
1
2
3
4
5
6
7 int i = 0; fprintf(stdout,"[%s]={",el); while(*(attr + i) != NULL){ fprintf(stdout,"%s = %s, ",attr[i],attr[i+1]); i+=2; }
Code:
1
2
3 for (i ; attr +i != NULL ; i+=2) fprintf(stdout,"%s = %s, ",attr[i],attr[i+1]); }
C'est étrange, l'erreur ne vient pas du programme en c mais de mon fichier xml ... Il est pourtant valide...
Non non, mais j'ai rajouté des lignes a mon fichier xml et l'erreur a changé de ligne.. J'en conviens que ca viens de la ...
J'essaye de la valider avec w3c maintenant.
Mais je me rapelle que c'est possible de le faire avec le terminal .. Je devrais revoir mes cours :roll:
Tu m'as enormément aider :)
Néanmoins, je crois que l'erreur vient de ton code.
Ca me signale qu'a la derniere ligne de mon fichier parser, j'ai une erreur... Autrement dis, au dernier element..
Je vais alors voir ton code et la !!
ba c'est vide.Code:
1
2
3 void XMLCALL finElement(void *userdata, const char *el){ }
Je pense que ca vient de la mais quoi mettre ?:roll:
Dans ton main, c'est ca qui se lance :
Code:
1
2
3
4 if(XML_Parse(p,buff,taille,done) == XML_STATUS_ERROR){ fprintf(stderr,"Erreur a la ligne %" XML_FMT_INT_MOD "u:\n%s\n",XML_GetCurrentLineNumber(p),XML_ErrorString(XML_GetErrorCode(p))); exit(-1); }
muai ... On va regardé ça un peu plus tard.. Je sature un peu du C, c'est pas marrant de faire des trucs sans comprendre...
Si ça ressemblait autant j'aurais pas autant galéré ..
J'ai toujours pas résolu le souci.. J'y travaille pourtant