Publié le 07 mai 2009 par Guy
Dans cette étape 11 je vais remplir automatiquement ma base de donnée de recette en recupérant un xml de données sur internet . Format du xml
<listerecette>
<recette nom=”Le Cari de Boeuf” type=”Repas” pays=”France” nbrpers=”4″ niveau=”" contenu=”Coupez le boeuf en morceaux (style daube). Émincez les oignons, coupez les tomates en petits morceaux et pilez ail, sel poivre e…”>
</recette>
…
<listerecette>
pour récupérer ce fichier cliquez ici.
Dans ma classe BDAcces je vais rajouter une méthode renvoi_liste_recette_xml qui vas se charger de récupérer le flux xml et de le renvoyer sous forme de tableau à deux dimensions les données sur les recettes.
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
| public ArrayList<ArrayList> renvoi_liste_recette_xml() throws Exception{
//***********************création de notre tableau dinamique
ArrayList<ArrayList> aTableRetour = new ArrayList<ArrayList>();
//************************récupération du flux wml
URL myURL = new URL("http://www.dgentreprises.com/recette/listerecette.php");
DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
// création d'un constructeur de documents
DocumentBuilder constructeur = fabrique.newDocumentBuilder();
//*****************lecture du flux xml**************
Document document = constructeur.parse(myURL.openStream());
Element racine = document.getDocumentElement();
NodeList liste = racine.getElementsByTagName("recette");
//remplissage de mon tableau
for(int i=0; i<liste.getLength(); i++){
ArrayList<String> aTableauTmp = new ArrayList<String>();
Element E1= (Element) liste.item(i);
//aTableRetour[i]= "";
aTableauTmp.add(E1.getAttribute("nom"));
aTableauTmp.add(E1.getAttribute("contenu"));
aTableRetour.add(aTableauTmp);
}
return aTableRetour;
} |
Point inportant dans le fichier manifest.xml il ne faut pas oublier de donner les droits à votre application pour aller sur internet avec cette ligne.
<uses-permission android:name=”android.permission.INTERNET” />
Dans ma fenetre setting je rajoute le bouton import recette sur lequel je vais mettre mon action d’importation de mon xml.
dans ma fenetre setting.xml
1
2
3
4
| <Button android:id="@+id/btrecet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="impor recette" /> |
et dans ma classe principale je rajoute, le code suivant pour remplir automatiquement ma base en utilisant ma méthode insertRecette.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| Button btimportrecette = (Button) findViewById(R.id.btrecet);
btimportrecette.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
try{
objBd.open();
ArrayList listeRecette = objBd.renvoi_liste_recette_xml();
String myString = "";
for(int i=0; i<listeRecette.size(); i++){
ArrayList tmp= (ArrayList) listeRecette.get(i);
myString =myString+tmp.get(0)+" importation réussie\n";
objBd.insertRecette((String)tmp.get(0),(String)tmp.get(1));
}
objBd.close();
contenuText.setText(myString);
} catch (Exception e) {
contenuText.setText( e.getMessage());
}
}
}); |

Code Source ici
Il est temps de mettre à profit les tutoriels d’Android France:
Passez à la vitesse supérieure et investissez quelques dizaines d’euros pour acquérir les connaissances qui vous feront gagner de l’argent avec vos applications rendez-vous sur notre boutique Android-france pour ces formations en vidéo