Parcours d'un fichier xml
voici une fonction que j'utilise pour parcourir un xml, au début elle était récursive mais pour les tests j'ai enlevé la récursivité:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| public void parcourir(Node e) {
System.out.println("parcourir");
for (Node child = e.getFirstChild(); child != null; child = child
.getNextSibling()) {
System.out.println("récursivité: " +child.getNodeName());
if (child.getNodeType() == Node.ELEMENT_NODE) {
System.out.println("e.getNodeType() == Node.ELEMENT_NODE :" + child.getNodeName()+" valeur: "+ child.getNodeValue());
if (child.getNodeName().equals("CentreRecherche")) {
CentreRecherche cr = new CentreRecherche();
System.out.println("e.getNodeName().equals(\"CentreRecherche\")");
for (Node node =child.getFirstChild(); node != null; node.getNextSibling()) {
System.out.println("CENTRE DE RECHERCHE : " +node.getNodeName() +" valeur: "+ node.getNodeValue());
if (node.getNodeName().equals("Personne") ){
System.out.println("e.getNodeName().equals(\"Personne\") :" +node.getNodeName());
Personne personne = new Personne();
for (Node nodePer = node.getFirstChild(); nodePer != null; nodePer
.getNextSibling()) {System.out.println("parcour de la liste des personnes:" +node.getNodeName());
if (nodePer.getNodeName().equals("nom")) {
System.out.println("e.getNodeName().equals(\"nom\"):" +node.getNodeName());
personne.setNom(nodePer.getNodeValue());
} else if (nodePer.getNodeName() == "prenom") {
System.out.println("e.getNodeName().equals(\"prenom\"):" +node.getNodeName());
personne.setPrenom(nodePer.getNodeValue());
}
}
cr.addPersonne(personne);
}else
if (node.getNodeName().equals("libelle")) {
System.out.println("e.getNodeName().equals(\"libellé\"):" +node.getNodeName());
cr.setLibelle(node.getNodeValue());
} else if (node.getNodeName().equals("latitude")) {
System.out.println("e.getNodeName().equals(\"latitude\"):" +node.getNodeName());
cr.setLat(Float.parseFloat(node.getNodeValue()));
} else if (node.getNodeName().equals("longitude")) {
System.out.println("e.getNodeName().equals(\"longitude\"):" +node.getNodeName());
cr.setLng(Float.parseFloat(node.getNodeValue()));
}
// fermuture du for
}
System.out.println("j'ajoute le tt dans cr");
this.cr.add(cr);
}
}
}
System.out.println("je sors de parcourir");
} |
l'xml est sous cette forme la:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<CentreRecherches>
<CentreRecherche>
<libelle>-</libelle>
<latitude>0</latitude>
<longitude>0</longitude>
<Personne>
<nom>yoan</nom>
<prenom>Gia</prenom>
</Personne>
</CentreRecherches> |
et le résultat obtenu est anormal, je ne parviens pas à le comprendre je vous donne un petit aperçu:
Code:
1 2 3 4 5 6 7 8
| parcourir
récursivité: #text
récursivité: CentreRecherche
e.getNodeType() == Node.ELEMENT_NODE :CentreRecherche valeur: null
e.getNodeName().equals("CentreRecherche")
CENTRE DE RECHERCHE : #text valeur:
CENTRE DE RECHERCHE : #text valeur:
CENTRE DE RECHERCHE : #text valeur: (à l'infini) |
déja je comprends pas pourquoi le type CENTRE DE RECHERCHE : #text alors que c'est un noeud et moi j'ai demandé l'affichage du nom vous voyez... Aidez moi svp...