Xml ... petits trucs, comprends pas trop

Résolu
heraclesss Messages postés 7 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 13 avril 2006 - 25 mai 2005 à 11:06
heraclesss Messages postés 7 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 13 avril 2006 - 25 mai 2005 à 13:54
Salut à tous !



Je débute en XML avec Java. j'aimerais comprendre un truc, je n'arrive pas à trouver la réponse.

Tout d'abord, j'ai choisis de développer le xml avec DOM.



J'ai un fichier xml tout simple :



<?xml version="1.0" encoding="ISO-8859-1"?>

<!--<!DOCTYPE DocumentForMyParserDemo SYSTEM "DocumentForMyParserDemo.dtd">-->

<cinemas>

<cinema>

<name>UCG de Brouckere</name>

130 Place de Brouckere 1200 Bruxelles

<films>

<film>

<filename>La grande vadrouille</filename>

<seances>

<hour>11h30</hour>

<hour>14h30</hour>

<hour>17h30</hour>

</seances>

</film>

<film>

</cinema>

</cinemas>





Donc comme je suis en DOM, je récupère l'arbre.... ok !

Pour manipuler l'arbre, j'essaye de faire des fonctions de parcours. La
première est une fonction récursive qui compte les feuilles. Dans mon
exemple, il devrait y en avoir 6.



ma fonction est :



public int nbFeuilles(Node node){

int nbFeuilles=0;

NodeList nodes=node.getChildNodes();

if(nodes.getLength()==0){System.out.println("<"+node+">"+node.getNodeType());return 1;}

else for(int i=0;i<nodes.getLength();i++){

nbFeuilles+=nbFeuilles(nodes.item(i));

}

return nbFeuilles;

}



j'ai mis un System.out.println pour débeuguer. (j'affiche le noeud entre "<>" et le type de noeud).



L'exécution de cette fonction avec comme parametre la racine de l'arbre donne :



<

>3

<

>3

3

<

>3

<130 Place de Brouckere 1200 Bruxelles>3

<

>3

<

>3

<

>3

<La grande vadrouille>3

<

>3

<

>3

<11h30>3

<

>3

<14h30>3

<

>3

<17h30>3

<

>3

<

>3

<

>3

<

>3

<

>3



Ce qui donne un total de 21 feuilles, alors qu'il devrait y en avoir 6 !! D'où viennent ces noeuds vides ?



Merci de m'eclairer !!



Laurent

3 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
25 mai 2005 à 13:37
Salut



Les noeuds vides viennent du fait que tu n'as pas de DTD ni XSD associé
à ton XML donc en BON parseur (il fonctionne tous selon ce principe !)
il te mets des noeuds vides entre chaque et autour de chaque noeud !



@+
3
cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 2
25 mai 2005 à 13:49
Salut,

Puis je crois bien que tu as une erreur dans ton xml ( oubli des
caractères rouges ), mais je ne sais pas si c'est du à un mauvais
copié/collé



<?xml version="1.0" encoding="ISO-8859-1"?>

<!--<!DOCTYPE DocumentForMyParserDemo SYSTEM "DocumentForMyParserDemo.dtd">-->

<cinemas>

<cinema>

<name>UCG de Brouckere</name>

130 Place de Brouckere 1200 Bruxelles

<films>

<film>

<filename>La grande vadrouille</filename>

<seances>

<hour>11h30</hour>

<hour>14h30</hour>

<hour>17h30</hour>

</seances>

</film>

</films>

</cinema>


N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
3
heraclesss Messages postés 7 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 13 avril 2006
25 mai 2005 à 13:54
Merci pour vos réponses. Bon, pour ces histoires de noeud vides, Je
vais tout connement tester si le noeud est vide (caractères espace
quand le noeud est un texte), je vois pas comment faire sinon.
0
Rejoignez-nous