Bonjour à tous,
je voudrais parser le fichier xml suivant :
Code XML : 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 <?xml version="1.0" encoding="UTF-8"?> <annuaire> <personne> <nom>martin</nom> <prenoms nb="1"> <prenom>jean</prenom> </prenoms> </personne> <personne> <nom>chirac</nom> <prenoms nb="3"> <prenom>pierre</prenom> <prenom>jacques</prenom> <prenom>bill</prenom> </prenoms> </personne> <personne> <nom>smith</nom> <prenoms nb="2"> <prenom>paul</prenom> <prenom>victor</prenom> </prenoms> </personne> </annuaire>
En fait, j'ai une méthode à laquelle je passe le nom de la personne
en argument, et en sortie je veux récupérer une ArrayList
contenant le nom, le nombre de prénoms et les prénoms.
Exemple :
Si j'ai: arraylist = readXML("chirac");alors arraylist doit contenir :
J'ai fait le code suivant mais ça marche pas. J'ai une java.lang.NullPointerExceptionchirac
3
pierre
jacques
bill
à la ligne arraylist.add(element2.getChild("prenom").getText()); et je ne comprend pas pourquoi.
Merci pour votre aide.
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
56
57
58
59
60
61
62
63
64 public class Test { private static ArrayList arraylist; private static org.jdom.Document document; private static Element root; public static void main(String[] args) { arraylist = new ArrayList(); arraylist = readXML("chirac"); for(int i = 0; i<arraylist.size();++i) { System.out.println(arraylist.get(i)); } } private static ArrayList readXML(String nom) { SAXBuilder sxb = new SAXBuilder(); try { document = sxb.build(new File("config/xxx.xml")); } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } root = document.getRootElement(); Element personne = root.getChild("personne"); Element prenoms = personne.getChild("prenoms"); List list = root.getChildren("personne"); Iterator i = list.iterator(); List list2 = prenoms.getChildren("prenom"); Iterator j = list2.iterator(); ArrayList arraylist = new ArrayList(); while (i.hasNext()) { Element element = (Element) i.next(); if (element.getChild("nom").getText().equals(nom)) { arraylist.add(element.getChild("nom").getText()); arraylist.add(element.getChild("prenoms").getAttributeValue("nb")); while (j.hasNext()) { Element element2 = (Element) j.next(); arraylist.add(element2.getChild("prenom").getText()); } } } return arraylist; } }
Partager