parser un fichier xml en java - Java - Programmation
Marsh Posté le 01-02-2005 à 11:45:50
Ben a chaque fois que tu rencontre une intersection, tu fais un set qui en fait ecrase la chaine de caracteres de la precedente intersection... Utilise une collection au lieu d'une chaine de caractere dans la classe carte, et change les methodes set et get l'attribut intersection.
Marsh Posté le 01-02-2005 à 11:46:24
C'est lorsque tu appelles setIntersection() pour la premère fois tu enregistres la première intersection. Puis quand tu rappelles setIntersection() pour la deuxième fois, tu enregistres la seconde intersection par dessus la première.
Bien entendu la troisième écrasera la seconde et ainsi de suite.
Edit: bon ben grillé
Marsh Posté le 03-02-2005 à 15:23:59
ben voila jai fait des modifications par rapport a vos suggestions et par rapport au fichier xml de mes collegues pour m'adapter donc voila:
la nouvelle classe carte:
Code :
|
l'ajout d' une classe intersection:
Code :
|
ajout d'une nouvelle classe route:
Code :
|
la modif de carteHandler:
Code :
|
le fichier xml:
Code :
|
il n'y a aucune erreur de compilation, mais a l'execution j'ai une erreur de parsing et je sai pas d'ou sa vient:
Code :
|
Marsh Posté le 03-02-2005 à 17:30:08
oula tu as changé pas mal de choses... je pensais a juste qq petits changements mineurs, comme le changement de la chaine de caractères intersection par une collection et au lieu d'une methode set, tu aurais utilisé une methode add...
Sinon pour ton erreur je pense qu'elle provient du fait que ta carte n'est jamais initialisée...
Alors au moment ou tu rencontres l'intersection tu set l'id de l'intersection sur la carte (pourquoi sur la carte et pas sur l'intersection ???), et comme la carte est nulle, ben tu te retrouves avec une belle exception.
Sinon y'a des trucs que je comprends pas :
- pourquoi avoir compliqué autant par rapport à la première version ?
- tes extends de carte au niveau des classes intersection et route qui pour moi sont superflues, car bon des intersection et des routes ne sont pas des cartes étendues...
Marsh Posté le 03-02-2005 à 17:41:46
Bon je viens de relire un petit coup, alors meme si tu repares l'exception je pense qu'il y a pas mal de choses qui ne vont pas dans ton programme :
- tu ne fais aucun appel à la méthode carte.setIntersection, ni setRoutes d'ailleurs, donc tu ne remplis jamais ton objet.
- A chaque fois que tu rencontres un noeud intersection, tu reinitialise une intersection, ce qui est normal, puis quand tu rencontre le tag de fermeture, tu l'ajoute dans la collection, jusque la je comprend, après le fait de perdre la référence que tu as sur la collection en faisant un intersection = null, ben la je vois pas l'interet... surtout que à l'intersection suivante quand tu vas essayer de faire le add sur la collection, tu vas te retrouver avec une Exception...
En gros je pense qu'il y'a pas mal de chose a revoir, car visiblement tu fais les mêmes erreurs au niveau des routes...
Marsh Posté le 03-02-2005 à 18:28:10
si le truc c'est de faire object java -> xml -> objet java, ou même juste xml -> object java, matte du coté d'xstream, tu feras en 2 lignes de code ce que tu fais là en une classe (même si c'est toujours interressant à faire pour l'amour de l'art )
Marsh Posté le 07-02-2005 à 14:53:18
je suis désolé mais je comprend pas tout ce que tu m'a expliqué teut
Marsh Posté le 07-02-2005 à 15:00:16
doit y avoir un problème : la ligne 54 de CarteHandler ne peut pas générer une NullPointerException ...
t'es sûr que c'est bien le code que tous nous a posté que tu executes ?
Marsh Posté le 07-02-2005 à 15:21:18
ben oui c le mini projet de validation de nouvelle technologie que j'ai posté
Marsh Posté le 07-02-2005 à 16:00:04
en fait j'ai compris pour le cas ou je mets intersection = null et pareil pour route = null.
mais je comprend pas ou mettre les carte.setIntersection et carte.setRoute
Marsh Posté le 08-02-2005 à 08:40:24
bon ben saye j'ai le programme ki marche:
alors j'ai enleve les = null comme me la dit teut puis j'ai modifié carte.setId() par route.setId()
voila le carteHandler modifié:
Code :
|
voila le resultat:
Code :
|
Marsh Posté le 08-02-2005 à 11:14:42
royou1 a écrit : je suis désolé mais je comprend pas tout ce que tu m'a expliqué teut |
Bon je suis pas tres clair c'est vrai... en fait qu'est ce que tu comprends pas dans mes explications ? (histoire que je reformule tout ca un peu mieux)
Sinon c'est bien ca marche, mais j'ai qq petites remarques :
- Est ce que les id sont importants ? car si oui ils sont mal 'setter' -> si tu affiche l'id de ta route par exemple, tu vas te retrouver avec l'id de ta seconde intersection, car des que tu rencontre une intersection tu 'set' l'id de cette intersection sur la route. Je pense que dans ton try catch, il faudrait que tu fasses un 'set' de l'id sur l'intersection et non sur la route. Pour l'id de la route tu ne le recupere visiblement jamais.
- Tu disais dans ton premier post, que tu parsais le xml afin de remplir un objet qui serait transmis a une autre personne. Or ta trace est correct, mais ton objet carte est toujours vide. Il faudrait par ex, a la fin de la methode enddocument faire un carte.setRoute(route) et carte.setIntersection(intersection), de plus il faudrait initialiser la carte dans la methode startDocument, et peu etre 'setter' l'id de la carte au moment ou tu analyse la balise ouvrante 'carte'.
En espérant avoir été plus clair.
Marsh Posté le 04-04-2005 à 15:04:24
bon ben jai fais les modifs en prenant en compte ce que tu m'as dit et ça marche plus donc pour pas retarder les autres membres de mon equipe j'ai repris mon projet qui marche.
maintenant on me demande de créer une classe qui va dessiner ce que j'ai récuperer avec mon parseur en vue d'une intégration avec les autres concepteurs qui m'accompagne.
Code :
|
je n'arrive pas a utiliser correctement le type point sa vient surement de mes import mais je bloque.
Marsh Posté le 06-04-2005 à 15:44:54
bon j'ai réussi des amélioration et je vais proceder a des test en vue d'une intégration dans le projet des que sa fonctionne je vous transmet tout ça peut servir pour d'autre .
Marsh Posté le 01-02-2005 à 10:10:01
Bonjour a tous je dois réaliser le parsing d'un fichier xml d'une petite application en vue de l'utiliser plus tard dans mon projet.
Mon projet va consister a recuperer des documents xml d'un coollegue et de les parser pour recuperer des données du genre route intersection stop.... pour ensuite les transmettre a un collegue qui va dessiner la carte en question.
dans la tache confié on doit recuperer une route et 2 intersections voila mon code
avec sa classe:
et son fichier xml:
le probleme et que je recupere la route mais qu'une seule intersection et je sais pas pourkoi.
resultat: