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:
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>
Voilà l'affichage que j'obtient:
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
voici mes classe livraison et colis:
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;
	}
}
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 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
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;
	}
}
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
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;
	   }
}
Code de l'activité principal:
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);
			}
 
		}
Merci de votre aide