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 :

chirac
3
pierre
jacques
bill
J'ai fait le code suivant mais ça marche pas. J'ai une java.lang.NullPointerException
à la ligne arraylist.add(element2.getChild("prenom").getText()); et je ne comprend pas pourquoi.
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;
	}
}
Merci pour votre aide.