simples Beispiel HTML parsen

  • 8 Antworten
  • Neuester Beitrag
Diskutiere simples Beispiel HTML parsen im Android App Entwicklung im Bereich Betriebssysteme & Apps.
X

xazen

Ambitioniertes Mitglied
Hallo Leute,

kann mir jemand ein ganz simples Beispiel dafür geben, wie ich den Inhalt einer HTML-Seite auslese ?

Beispiel: Die HTML-Datei beinhaltet nur:

Code:
HalloWelt
Wie kann ich eine Variable erstellen, welches einfach den String "HalloWelt" hat. Die HTML-Datei hat keinerlei TAGS. Das Protokoll ist https.
 
M

marquies

Neues Mitglied
Ich hab es bei meinem aktuellen Projekt so gelöst:

PHP:
	//-URL laden
    public static String getText(String url) {
    	
        //-String für Rückgabe
        String result = "";

    	//-HTTPClient erstellen
        HttpClient httpclient = new DefaultHttpClient();
        
        //-HHTPGet erstellen
        HttpGet httpget = new HttpGet(url); 
        
        //-HTTPResponse erstellen
        HttpResponse response;
     
        //-Anforderung starten
        try {
        	
        	//-Antwort von HTTPClient mit HTTPGet
            response = httpclient.execute(httpget);
            
            //-HTTPEntity auf Antwort ausführen
            HttpEntity entity = response.getEntity();
            
            //-Wenn es eine antwort gibt
            if (entity != null) {
 
                //-Antwort in InputStream speichern
                InputStream instream = entity.getContent();
                
                //-InputStream in String umwandeln
                result= convertStreamToString(instream);

                //-InputStream schließen
                instream.close();
 
            }

        //-Exception abfangen
        } catch (ClientProtocolException e) {

        	//-Fehler speichern
            e.printStackTrace();
            
            result = "ClientProtocolException";
            
        //-Exception abfangen    
        } catch (IOException e) {
        	
        	//-Fehler speichern
            e.printStackTrace();
            
            result = "IOException";
             
        }
        
        return result;  

    }
Jetzt fehlt nur noch der StreamReader

PHP:
	//-InputStream in String convertieren
    private static String convertStreamToString(InputStream is) {
        
    	//-BufferReader mit InputStream erstellen
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        
        //-StringBuilder erstellen
        StringBuilder sb = new StringBuilder();
 
        //-Abbruchbedingung
        String line = null;
        
        try {
        	
        	//-While-Schleife ausführen, bis man in der letzten Zeile des BufferReader angekommen ist
            while ((line = reader.readLine()) != null) {
            	
            	//-Neue Zeile an String anhängen
                sb.append(line + "\n");
                
            }
            
        //-Exception abfangen    
        } catch (IOException e) {
        	
            e.printStackTrace();
            
        } finally {
            try {
                is.close();
                
              //-Exception abfangen       
            } catch (IOException e) {
            	
                e.printStackTrace();
                
            }
        }
        
        //-String zurückgeben
        return sb.toString();
    }
 
X

xazen

Ambitioniertes Mitglied
Das Problem hörte sich so simpel an. Und dennoch so viel Code...
Funktioniert aber super und macht genau das was ich brauche. :thumbsup: Danke!
 
M

marquies

Neues Mitglied
Ich hab mir eine Art DownloadHandler dafür geschrieben. Damit kann ich dann JSONArrays, JSONObjecte oder einach nur Text herunterladen.

Sowas erleichtert die Arbeit ungemein.
 
X

xazen

Ambitioniertes Mitglied
Habe ich bisher nicht gebraucht. Aber hört sich auf jedenfall hilfreich an. Würdest du mir den Code dafür geben ? :)
 
M

marquies

Neues Mitglied
Nicht sehr schön, aber es erfüllt seinen Zweck.

PHP:
package de.xxx.xxxxx;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class DownloadHandler {

	//-InputStream in String convertieren
    private static String convertStreamToString(InputStream is) {
        
    	//-BufferReader mit InputStream erstellen
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        
        //-StringBuilder erstellen
        StringBuilder sb = new StringBuilder();
 
        //-Abbruchbedingung
        String line = null;
        
        try {
        	
        	//-While-Schleife ausführen, bis man in der letzten Zeile des BufferReader angekommen ist
            while ((line = reader.readLine()) != null) {
            	
            	//-Neue Zeile an String anhängen
                sb.append(line + "\n");
                
            }
            
        //-Exception abfangen    
        } catch (IOException e) {
        	
            e.printStackTrace();
            
        } finally {
            try {
                is.close();
                
              //-Exception abfangen       
            } catch (IOException e) {
            	
                e.printStackTrace();
                
            }
        }
        
        //-String zurückgeben
        return sb.toString();
    }
	
	//-JSONArray von URL laden
    public static String getArticle(String url) {
    	
        //-String für Rückgabe
        String result = "";

    	//-HTTPClient erstellen
        HttpClient httpclient = new DefaultHttpClient();
        
        //-HHTPGet erstellen
        HttpGet httpget = new HttpGet(url); 
        
        //-HTTPResponse erstellen
        HttpResponse response;
     
        //-Anforderung starten
        try {
        	
        	//-Antwort von HTTPClient mit HTTPGet
            response = httpclient.execute(httpget);
            
            //-HTTPEntity auf Antwort ausführen
            HttpEntity entity = response.getEntity();
            
            //-Wenn es eine antwort gibt
            if (entity != null) {
 
                //-Antwort in InputStream speichern
                InputStream instream = entity.getContent();
                
                //-InputStream in String umwandeln
                result= convertStreamToString(instream);

                //-InputStream schließen
                instream.close();
 
            }

        //-Exception abfangen
        } catch (ClientProtocolException e) {

        	//-Fehler speichern
            e.printStackTrace();
            
            result = "ClientProtocolException";
            
        //-Exception abfangen    
        } catch (IOException e) {
        	
        	//-Fehler speichern
            e.printStackTrace();
            
            result = "IOException";
             
        }
        
        return result;  

    }
    
	//-JSONArray von URL laden
    public static String getJsonArray(String url) {
    	
        //-String für Rückgabe
        String jsArr = "";

    	//-HTTPClient erstellen
        HttpClient httpclient = new DefaultHttpClient();
        
        //-HHTPGet erstellen
        HttpGet httpget = new HttpGet(url); 
        
        //-HTTPResponse erstellen
        HttpResponse response;
     
        //-Anforderung starten
        try {
        	
        	//-Antwort von HTTPClient mit HTTPGet
            response = httpclient.execute(httpget);
            
            //-HTTPEntity auf Antwort ausführen
            HttpEntity entity = response.getEntity();
            
            //-Wenn es eine antwort gibt
            if (entity != null) {
 
                //-Antwort in InputStream speichern
                InputStream instream = entity.getContent();
                
                //-InputStream in String umwandeln
                String result= convertStreamToString(instream);
 
                //-String in JSONObject umwandeen
                JSONArray json = new JSONArray(result);

                //-InputStream schließen
                instream.close();
                
                //-JSONObject zurück geben
                jsArr = json.toString();
            }
 
 
        //-Exception abfangen
        } catch (ClientProtocolException e) {

        	//-Fehler speichern
            e.printStackTrace();
            
            jsArr = "ClientProtocolException";
            
        //-Exception abfangen    
        } catch (IOException e) {
        	
        	//-Fehler speichern
            e.printStackTrace();
            
            jsArr = "IOException";
            
        //-Exception abfangen    
        } catch (JSONException e) {
        	
        	//-Fehler speichern
            e.printStackTrace(); 
            
            jsArr = "JSONException";

        }
        
        return jsArr;  

    }
    
	//-JSONObject von URL laden
    public static String getJsonObject(String url) {
    	
        //-String für Rückgabe
        String jsObj = "";

    	//-HTTPClient erstellen
        HttpClient httpclient = new DefaultHttpClient();
        
        //-HHTPGet erstellen
        HttpGet httpget = new HttpGet(url); 
        
        //-HTTPResponse erstellen
        HttpResponse response;
     
        //-Anforderung starten
        try {
        	
        	//-Antwort von HTTPClient mit HTTPGet
            response = httpclient.execute(httpget);
            
            //-HTTPEntity auf Antwort ausführen
            HttpEntity entity = response.getEntity();
            
            //-Wenn es eine antwort gibt
            if (entity != null) {
 
                //-Antwort in InputStream speichern
                InputStream instream = entity.getContent();
                
                //-InputStream in String umwandeln
                String result= convertStreamToString(instream);
 
                //-String in JSONObject umwandeen
                JSONObject json = new JSONObject(result);

                //-InputStream schließen
                instream.close();
                
                //-JSONObject zurück geben
                jsObj = json.toString();
            }
 
 
        //-Exception abfangen
        } catch (ClientProtocolException e) {

        	//-Fehler speichern
            e.printStackTrace();
            
            jsObj = "ClientProtocolException";
            
        //-Exception abfangen    
        } catch (IOException e) {
        	
        	//-Fehler speichern
            e.printStackTrace();
            
            jsObj = "IOException";
            
        //-Exception abfangen    
        } catch (JSONException e) {
        	
        	//-Fehler speichern
            e.printStackTrace(); 
            
            jsObj = "JSONException";

        }
        
        return jsObj;  

    }
	
}
 
X

xazen

Ambitioniertes Mitglied
Danke! Werde es bei Gelgenheit direkt austesten.
 
D

DerSeppel

Ambitioniertes Mitglied
Sobald die Internetseite etwas aufwendiger wird, solltest du dir überlegen die DOM Parser API zu verwenden. Damit kannst du alle Objekte mit bestimmten Attributen suchen, durch Strukturen iterieren usw.

Android XML Parsing Tutorial
 
X

xazen

Ambitioniertes Mitglied
Die Klasse habe ich auch gefunden. Das da "XML" dran stand hat mich aber irritiert, weswegen ich mir das nicht weiter angeschaut habe. Aber danke für den Hinweis. Wenn es auch mit HTML funktioniert dann werde ich es mir mal genauer anschauen :)