NullPointerException pendant le parsage d'un document XML
Bonjour à tous,
je voudrais parser le fichier xml suivant :
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
|
<?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 :
Citation:
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:
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.