Bonjour,
Je suis entrain de faire une application qui lit un fichier xml et qui insère ensuite les données dans la base si j'arrive à aller jusque là.
Je souhaiterai associés les colis à la livraison lors de la lecture du fichier qui se présente comme ceci:
Voilà l'affichage que j'obtient:
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 <livraisons> <livraison> <client>Mme Lagrange</client> <adresse>28 rue des Rainettes 33150 Cenon</adresse> <colis> <ref>172648574</ref> <montant>96.00</montant> </colis> <colis> <ref>172648586</ref> <montant>45.80</montant> </colis> </livraison> <livraison> <client>M. Iribarne</client> <adresse>5 chemin des Dunes 33510 Andernos</adresse> <colis> <ref>172648588</ref> <montant>146.75</montant> </colis> </livraison> </livraisons>
voici mes classe livraison et colis:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Livraison : client : Mme Lagrange => adresse : 28 rue des Rainettes 33150 Cenon Colis : référence : 172648574 => montant : 96.0 Colis : référence : 172648586 => montant : 45.8 Colis : référence : 172648588 => montant : 146.75 Livraison : client : M. Iribarne => adresse : 5 chemin des Dunes 33510 Andernos Colis : référence : 172648574 => montant : 96.0 Colis : référence : 172648586 => montant : 45.8 Colis : référence : 172648588 => montant : 146.75
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 public class Livraison { private String client; private String adresse; public Livraison(String client, String adresse) { this.client = client; this.adresse = adresse; } public Livraison(){ super(); } public String getClient(){ return client; } public String getAdresse(){ return adresse; } public void setClient(String client) { this.client = client; } public void setAdresse(String adresse) { this.adresse = adresse; } public String toString(){ return "Livraison : client : "+client+" => adresse : "+adresse; } }Ma classe LitXml:
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 public class Colis { private String ref; private double montant=0; private Livraison idLivraison; public Colis(Livraison idLivraison, double montant, String ref) { super(); this.idLivraison = idLivraison; this.montant = montant; this.ref = ref; } public Colis(){ super(); } public double getMontant() { return montant; } public Livraison getIdLivraison() { return idLivraison; } public String getRef(){ return ref; } public void setRef(String ref) { this.ref = ref; } public void setMontant(double montant) { this.montant = montant; } public String toString(){ return "Colis : référence : "+ref+" => montant : "+montant; } }
ma classe MaSaxHandler
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 public class LitXml { private List<Livraison> lesLivraisons; private List<Colis> lesColis; public LitXml(Context context) { try { MaSaxHandler handler = new MaSaxHandler(); Resources resources = context.getResources(); InputStream inputStream = resources.openRawResource(R.raw.livraisons); handler.parse(inputStream); lesLivraisons = handler.getLesLivraisons(); lesColis = handler.getLesColis(); } catch (Exception e) { Log.i("litxml", "erreur"); } } public List<String> donneLivraisons(){ List<String> liste = new ArrayList<String>(); for (Livraison livraison : lesLivraisons) liste.add(livraison.toString()); return liste; } public List<String> donneColis(){ List<String> liste = new ArrayList<String>(); for (Colis colis : lesColis) liste.add(colis.toString()); return liste; } }
Code de l'activité principal:
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 ublic class MaSaxHandler extends DefaultHandler { private Livraison livraison; private List<Livraison> lesLivraisons = new ArrayList<Livraison>(); private Colis colis; private List<Colis> lesColis = new ArrayList<Colis>(); private String valeur; public void parse(InputStream is) throws ParserConfigurationException, SAXException, IOException{ SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser=factory.newSAXParser(); parser.parse(is,this); } public void startElement( String uri, String localName, String qName, Attributes attributes) throws SAXException { if (localName.equals("livraison")) livraison = new Livraison(); if (localName.equals("colis")) colis = new Colis(); } public void characters(char[] ch,int start, int length) throws SAXException{ valeur = new String(ch,start,length); } public void endElement( String uri, String localName,String qName) throws SAXException { if (localName.equals("livraison")) { lesLivraisons.add(livraison); }else if (localName.equals("client")){ livraison.setClient(valeur); }else if (localName.equals("adresse")){ livraison.setAdresse(valeur); }else if (localName.equals("colis")){ lesColis.add(colis); }else if (localName.equals("ref")){ colis.setRef(valeur); }else if (localName.equals("montant")){ double monLong= Double.parseDouble(valeur); colis.setMontant(monLong); } } public List<Livraison> getLesLivraisons() { return lesLivraisons; } public List<Colis> getLesColis() { return lesColis; } }
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 for (String ligne : litXml.donneLivraisons()){ Log.i("litxml", ligne); for (String ligne1 : litXml.donneColis()){ Log.i("litxml", ligne1); } }
Partager