Lire des données imbriquées dans d'autres
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:
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:
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:
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:
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:
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:
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:
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