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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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...