Xml ... petits trucs, comprends pas trop [Résolu]

Signaler
Messages postés
7
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
13 avril 2006
-
Messages postés
7
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
13 avril 2006
-
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

Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
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 !



@+
Messages postés
240
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2006
1
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 !!!
Messages postés
7
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
13 avril 2006

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.