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é:
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
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"); }
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:
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...
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)
Partager