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 :

Parseur balise (jsoup?)


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Parseur balise (jsoup?)
    Bonjour à tous,
    je voulais savoir par quel moyen afficher une partie d'une page web uniquement dans une app android (dans une Webview)
    J'ai vu sur internet qu'on pouvait éventuellement avec un parseur (pour jsoup j'ai regardé)
    Dans mon cas, je veux uniquement afficher la partie concrète sur site: par exemple
    Se logger uniquement
    ou Voir les dernières news uniquement

    J'ai vu une démo de fonctionnement jsoup avec un test directment dans la console mais comme pour jsoup il faut directement déclarer le doc en String.
    Enfin, comment m'y prendre pour que ça apparaisse dans le Layout en gros?
    puisque mon code ressemble à ça mais c'est du Java direct, android ne gère pas les syso n'est-ce pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    doc = Jsoup.connect("url").get();
    			String titre = doc.title();
    			System.out.println("Titre"+titre);

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Lorsque tu rapatries ton document xhtml, tu peux le manipuler via l'API DOM et retirer ce que tu veux (si tu as bien repéré quoi) et ensuite seulement le charger dans une webview. Voilà les grandes lignes de la solution.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci de ta réponse (j'éditais mon message au moment de ta réponse)
    Il me suffirait de charger une webview juste après ce que j'ai parsé en jsoup?
    je vais me renseigner sur l'api DOM
    edit :les pages du sites ne sont pas en xhtml juste html, j'ai lu que l'api dom était que pour le xml

  4. #4
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Mais de l'html c'est du xml donc c'est ok.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Hmm, le soucis est que je ne vois pas du tout comment m'y prendre pour l'affichage avec android pour le parseur...
    En java simple un syso aurait suffit mais la vu que ce n'est pas le cas .
    dom api pour xml me semble vraiment bizarre il n'y je ne vois pas comment choisir les balises que je veut prendre en compte contrairement à jsoup
    C'est au niveau du xml de cette activity que je dois me débrouiller pour faire afficher ce que je récupère avec le parseur?
    voici un exemple de mon code

    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
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_home);
    		webView = (WebView) findViewById(R.id.webView1);
    		webView.getSettings().setJavaScriptEnabled(true);
     
    		//webView.loadUrl("google.fr");
     
     
            webView.setWebViewClient(new MyCustomWebViewClient());
            webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    		try {
    			doc = Jsoup.connect("www.google.fr").get();
    			String titre = doc.title();
    			System.out.println("Titre"+titre);
    			Elements urls = doc.select("a");
    			for(org.jsoup.nodes.Element url: urls) {
    				System.out.println(url);
     
    			}

  6. #6
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Apparemment tu as installé la librairie jsoup pour te faciliter la vie dans la manipulation DOM d'un document HTML non ?. Donc regardes la documentation de Jsoup, elle explique comment accéder facilement à un document html par son url, comment accéder à des nœuds du document, comment supprimer des nœuds, etc... Pour savoir quels nœuds supprimer du document, tu devras évidemment étudier le code source html d'origine. A la fin, l'idée est de sérialiser le document modifié sous forme qu'une String (avec toString() selon la doc jsoup). Tout ceci doit être réalisé dans un thread séparé, puis tu charges cette chaîne dans la webview avec
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    webview.loadData(summary, "text/html", null);  //summary est la chaîne qui contient le html modifié à l'étape précédente
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup pour ton indication j'y vois un peu plus clair maintenant !
    Dans mon code j'éxecute les taches du Jsoup dans une Asynctask
    Mais à quel endroit dois-je mettre le webView.loadData ? et au niveau de la data qu'il doit charger laquel-est-ce ?Parceque si je charge "url" et bien j'ai l'url de mon site (normal puisque j'ai fait String url = bbbb.monsite)
    J'aimerai bien en réalité charger le résultat obtenu dans ma tache asynchrone.
    Voila un aperçu global de mon code
    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
    public class FeeHomeActivity extends Activity {
    	WebView webView;
    	Matache mt;
    	String URL = "http://example.test"
     
    	public void onCreate(Bundle savedInstanceState) {
    		.....
    	}
     
    	public void onclick(View v) {
    		mt = new Matache();
    		mt.execute(URL);
    	}
     
    	class Matache extends AsyncTask<String, Void, String> {
    		Document doc;
    		String titreSite = null;
     
    		@Override
    		protected void onPreExecute() {
    			super.onPreExecute();
    		}
     
    		protected String doInBackground(String... params) {
    			String url = params[0];
    			Document doc;
     
    			try {
    				doc = Jsoup.connect(url).get();
    				String titreSite = doc.title();
     
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
     
    			return titreSite;
    		}
     
    		protected void onPostExecute(String result) {
    			super.onPostExecute(result);
     
    		}
    	}
    }

  8. #8
    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
    Salut,


    Dans ce cas tu peux toujours charger une page vide ou de lancement dans ta webview au début, puis recharger la page lors de ton retour de ton async task si tu veux. Cela peut être une idée.

    Après le coup de la progress marche très bien également pour signaler a l'utilsateur que des données sont en cours de téléchargement. à toi de voir .
    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.

Discussions similaires

  1. Parseur HTML en Jsoup PHP
    Par bakhalils dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 31/03/2014, 11h10
  2. JSoup bloquée avec les balises
    Par Marinetpaul dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 05/03/2013, 13h46
  3. [SAX] Parseur SAX récupération valeur d'une balise comportant un attribut
    Par Mides dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 24/01/2013, 14h17
  4. Nom balise XML sur plusieurs niveaux - Parseur Sax
    Par Mides dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 27/05/2012, 10h50

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