Bonjour à tous,
j'ai des difficultés pour parser avec JDOM mon fichier xml ci-dessous :
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 <?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 :
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 ?
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 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; }
Merci.
Partager