Problème pour parser un fichier XML [débutant]
Bonjour à tous,
j'ai des difficultés pour parser avec JDOM mon fichier xml ci-dessous :
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
|
<?xml version="1.0" encoding="UTF-8"?>
<produits>
<produit nom="produit1">
<type>compote</type>
<melanges>
<melange id="1">
<fruit>marron</fruit>
<legume>carotte<legume>
</melange>
</melanges>
</produit>
<produit nom="produit2">
<type>compote</type>
<melanges>
<melange id="1">
<fruit>pommme</fruit>
<legume>carotte<legume>
</melange>
<melange id="2">
<fruit>poire</fruit>
<legume>haricot</legume>
</melange>
</melanges>
</produit>
</produits> |
Je code une méthode qui prend en argument le nom du produit et qui doit
renvoyer en sortie un vector.
Je voudrais que ce vector contienne lui-même 2 vectors.
Exemple : si on reçoit en argument "produit2", le vector contient :
[ [1,pommme,carotte] [2,poire,haricot] ]
Voici le code que j'utilise pour cela :
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
|
private static org.jdom.Document produitListe;
private static Element root;
private Vector parse(Vector v, String nomProduit)
{
SAXBuilder sxb = new SAXBuilder();
produitListe = sxb.build(new File("config/produitListe.xml"));
//Pour parcourir les différents produits
root = produitListe.getRootElement();
List listeProduit = root.getChildren("produit");
Iterator i = listeProduit.iterator();
//Pour parcourir les différents mélanges d'un produit
Element produit = root.getChild("produit");
Element melanges = (Element) produit.getChild("melanges");
List listeMelanges = melanges.getChildren("melange");
Iterator j = listeMelanges.iterator();
while (i.hasNext())
{
Element element = (Element) i.next();
if(element.getAttributeValue("nom").equals(nomProduit))
{
while (j.hasNext())
{
Element element2 = (Element) j.next();
Vector w = new Vector();
w.addElement((String) element2.getAttributeValue("id"));
w.addElement((String) element2.getChild("fruit").getText());
w.addElement((String) element2.getChild("legume").getText());
v.addElement(w);
}
}
}
return v;
} |
Pour l'instant, ma méthode ne renvoie qu'un vecteur qui contient [[1, marron, carotte]] lorsque je lui met "produit2" en argument, ce qui est faux. Pourriez-vous m'indiquer comment obtenir en sortie le vecteur que j'ai indiqué ci-dessus ?
Merci.