IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Récupération du contenu d'un fichier XML en utilisant le service REST


Sujet :

Android

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 48
    Points : 40
    Points
    40
    Par défaut Récupération du contenu d'un fichier XML en utilisant le service REST
    bonjour les amis Android,
    je suis entrain de développer mon application qui permet de récupérer les données à partir d'un fichier XML se trouvant dans le web.
    mon problème : lorsque je parse les données directement de web il prend beaucoup de temps pour afficher les données sur tél.
    je besoin d'une solution pour mettre les données dans la base ou en utilisant le service REST ....

    voila mon code source

    le code source de l'activité SAXParserActivity

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    package com.android.SAXParser;
     
    import java.net.URL;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    import org.xml.sax.InputSource;
    import org.xml.sax.XMLReader;
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    public class SAXParserActivity extends Activity {
     
    	XMLGettersSetters data;
     
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
     
    		/** 
                     * Get the view of the layout within the main layout, so that we can add TextViews.
                     **/
    		View layout = findViewById(R.id.layout);
     
    		/**  
                     * Create TextView Arrays to add the retrieved data to.
                     **/
    		TextView title[];
     
    		TextView teaser[];
     
    		TextView content[];
     
     
    		try {
     
    			/**
                             * Create a new instance of the SAX parser
                             **/
    			SAXParserFactory saxPF = SAXParserFactory.newInstance();
    			SAXParser saxP = saxPF.newSAXParser();
    			XMLReader xmlR = saxP.getXMLReader();
     
     
    			URL url = new URL("http://www.mosaiquefm.net/smart/newscast.xml?Cat=4"); // URL of the XML
     
    			/** 
                             * Create the Handler to handle each of the XML tags. 
                             **/
    			XMLHandler myXMLHandler = new XMLHandler();
    			xmlR.setContentHandler(myXMLHandler);
    			xmlR.parse(new InputSource(url.openStream()));
     
    		} catch (Exception e) {
    			System.out.println(e);
    		}
     
    		data = XMLHandler.data;
     
    		/** 
                     * Makes the TextView length the size of the TextView arrays by getting the size of the 
                     **/
    		title = new TextView[data.getTitle().size()];
    		teaser = new TextView[data.getTeaser().size()];
    		content = new TextView[data.getContent().size()];
     
     
     
    		/** 
                     * Run a for loop to set All the TextViews with text until 
                     * the size of the array is reached.
                     * 
                     **/
    		for (int i = 0; i < data.getTitle().size(); i++) {
     
    			title[i] = new TextView(this);
    			title[i].setText("Title = "+data.getTitle().get(i));
     
    			teaser[i] = new TextView(this);
    			teaser[i].setText("Artist = "+data.getTeaser().get(i));
     
    			content[i] = new TextView(this);
    			content[i].setText("Country = "+data.getContent().get(i));
     
     
    			((ViewGroup) layout).addView(title[i]);
    			((ViewGroup) layout).addView(teaser[i]);
    			((ViewGroup) layout).addView(content[i]);
     
    		}
     
    		setContentView(layout);
     
    	}
    }
    le code source de l'activité XMLGettersSetters
    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
     
    package com.android.SAXParser;
     
    import java.util.ArrayList;
     
    import android.util.Log;
     
    /**
     *  This class contains all getter and setter methods to set and retrieve data.
     *  
     **/
    public class XMLGettersSetters {
     
    	private ArrayList<String> title = new ArrayList<String>();
    	private ArrayList<String> teaser = new ArrayList<String>();
    	private ArrayList<String> content = new ArrayList<String>();
     
    	public ArrayList<String> getTitle() {
    		return title;
    	}
     
    	public void setTitle(String title) {
    		this.title.add(title);
    		Log.i("This is the title:", title);
    	}
     
    	public ArrayList<String> getTeaser() {
    		return teaser;
    	}
     
    	public void setTeaser(String teaser) {
    		this.teaser.add(teaser);
    		Log.i("teaserrrrrrrrrr:", teaser);
    }
    	public ArrayList<String> getContent() {
    		return title;
    	}
     
    	public void setContent(String content) {
    		this.content.add(content);
    		Log.i("le contenu est :", content);
    	}
     
    }
    le code source de l'activité XMLHandler
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    package com.android.SAXParser;
     
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
     
    public class XMLHandler extends DefaultHandler {
     
    	String elementValue = null;
    	Boolean elementOn = false;
    	public static XMLGettersSetters data = null;
     
    	public static XMLGettersSetters getXMLData() {
    		return data;
    	}
     
    	public static void setXMLData(XMLGettersSetters data) {
    		XMLHandler.data = data;
    	}
     
    	/** 
             * This will be called when the tags of the XML starts.
             **/
    	@Override
    	public void startElement(String uri, String localName, String qName,
    			Attributes attributes) throws SAXException {
     
    		elementOn = true;
     
    		if (localName.equals("articles"))
    		{
    			data = new XMLGettersSetters();
    		} else if (localName.equals("article")) {
    			/** 
                             * We can get the values of attributes for eg. if the CD tag had an attribute( <CD attr= "band">Akon</CD> ) 
                             * we can get the value "band". Below is an example of how to achieve this.
                             * 
                             * String attributeValue = attributes.getValue("attr");
                             * data.setAttribute(attributeValue);
                             * 
                             * */
    		}
    	}
     
    	/** 
             * This will be called when the tags of the XML end.
             **/
    	@Override
    	public void endElement(String uri, String localName, String qName)
    			throws SAXException {
     
    		elementOn = false;
     
    		/** 
                     * Sets the values after retrieving the values from the XML tags
                     * */ 
    		if (localName.equalsIgnoreCase("title"))
    			data.setTitle(elementValue);
    		else if (localName.equalsIgnoreCase("content"))
    			data.setContent(elementValue);
    		else if (localName.equalsIgnoreCase("Teaser"))
    			data.setTeaser(elementValue);
     
    	}
     
    	/** 
             * This is called to get the tags value
             **/
    	@Override
    	public void characters(char[] ch, int start, int length)
    			throws SAXException {
     
    		if (elementOn) {
    			elementValue = new String(ch, start, length);
    			elementOn = false;
    		}
     
    	}
     
    }

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    je besoin d'une solution pour mettre les données dans la base ou en utilisant le service REST ....
    Ok mais ?

    Qu'elle est la taille de ton fichier, quelle est la taille de tes données , etc.

    Merci
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    le code source de SAXParserActivity n'est pas bon: utilisation de requête "longues" dans le onCreate... ça va foirer de toute manière...

    Qu'appelles tu "long" ? 1s ? 2s ? 3s ? (après ce délai normalement l'appli a déjà crashé vu le code).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  4. #4
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 48
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Ok mais ?

    Qu'elle est la taille de ton fichier, quelle est la taille de tes données , etc.

    Merci
    càd que lorsque j'exécute l'application , les données prend beaucoup de temps pour qu'elles s'afficheront.

    Citation Envoyé par nicroman Voir le message
    le code source de SAXParserActivity n'est pas bon: utilisation de requête "longues" dans le onCreate... ça va foirer de toute manière...

    Qu'appelles tu "long" ? 1s ? 2s ? 3s ? (après ce délai normalement l'appli a déjà crashé vu le code).
    pouvez vous me données un autre lien ou code pour que l'application ne se crache plus.

Discussions similaires

  1. [JDOM] [Debutant] charger le contenu d'un fichier XMl dans un String
    Par apoca dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 17/10/2007, 18h24
  2. changer le contenu d'un fichier xml.
    Par mun_a dans le forum Général Python
    Réponses: 2
    Dernier message: 24/08/2007, 14h34
  3. [XML] [EXPAT] Mise en memoire d'information contenue dans un fichier XML
    Par websurfeur dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/04/2007, 14h16
  4. Lire le contenu d'un fichier xml
    Par Invité dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 10/01/2006, 19h13
  5. Récupération des éléments d'un fichier xml en flux retour
    Par opeo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 07/11/2005, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo