1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

simples Beispiel HTML parsen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von xazen, 23.03.2011.

  1. xazen, 23.03.2011 #1
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    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.
     
  2. marquies, 23.03.2011 #2
    marquies

    marquies Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    23.03.2011
    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
                    
    resultconvertStreamToString(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();
        }
     
  3. xazen, 23.03.2011 #3
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    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!
     
  4. marquies, 23.03.2011 #4
    marquies

    marquies Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    23.03.2011
    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.
     
  5. xazen, 23.03.2011 #5
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    Habe ich bisher nicht gebraucht. Aber hört sich auf jedenfall hilfreich an. Würdest du mir den Code dafür geben ? :)
     
  6. marquies, 23.03.2011 #6
    marquies

    marquies Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    23.03.2011
    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
                    
    resultconvertStreamToString(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 resultconvertStreamToString(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 resultconvertStreamToString(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;  

        }
        
    }
     
  7. xazen, 23.03.2011 #7
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    Danke! Werde es bei Gelgenheit direkt austesten.
     
  8. DerSeppel, 25.03.2011 #8
    DerSeppel

    DerSeppel Android-Hilfe.de Mitglied

    Beiträge:
    84
    Erhaltene Danke:
    8
    Registriert seit:
    16.03.2011
    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
     
  9. xazen, 25.03.2011 #9
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    79
    Erhaltene Danke:
    0
    Registriert seit:
    09.12.2010
    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 :)
     

Diese Seite empfehlen