XML via AsyncTask aus dem Internet laden und parsen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • XML via AsyncTask aus dem Internet laden und parsen

    Hallo Leute, ich bin gerade halb am verzweifeln und hoffe jemand kann mir helfen :)

    Ich möchte über eine URL, an die ich GPS Koordinaten übergebe, ein XML bekommen und dieses Parsen.

    Das ganze läuft als Konsolenanwendung einwandfrei, hier mal der Code:

    Java-Quellcode

    1. private double lat;
    2. private double lng;
    3. .
    4. .
    5. .
    6. try{
    7. DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
    8. DocumentBuilder builder= factory.newDocumentBuilder();
    9. URL url = new URL("http://api.geonames.org/findNearbyWikipedia?lat="+lat+"&lng="+lng+"&username=mein_username");
    10. InputStream stream = url.openStream();
    11. Document xmlDocument = builder.parse(stream);
    12. NodeList titleNodes= xmlDocument.getElementsByTagName("title");
    13. NodeList articleURLNodes= xmlDocument.getElementsByTagName("wikipediaUrl");
    14. for(int i=0; i<titleNodes.getLength(); i++){
    15. System.out.println("Artikel "+ (i+1)+": "+ titleNodes.item(i).getTextContent() + " " + articleURLNodes.item(i).getTextContent());
    16. }
    17. }catch(Exception ex){
    18. System.out.println(ex.getMessage());
    19. }
    20. }
    Alles anzeigen



    Um das allerdings in Android umzusetzen muss ich AsyncTasks verwenden um keine NetworkOnMainThread Exception zu bekommen.
    Leider werde ich aus der Doku nicht so schlau :(


    Hier ist mal mein Ansatz, bei dem leider aber garnichts passiert:

    Java-Quellcode

    1. private class DownloadXMLTask extends AsyncTask<String, Void, Void> {
    2. String wikiUrl;
    3. URL url;
    4. InputStream stream;
    5. DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
    6. DocumentBuilder builder;
    7. protected Void doInBackground(String... urls) {
    8. try {
    9. wikiUrl=urls[0];
    10. url = new URL(wikiUrl);
    11. InputStream stream = url.openStream();
    12. builder = factory.newDocumentBuilder();
    13. Document xmlDocument = builder.parse(stream);
    14. NodeList titleNodes= xmlDocument.getElementsByTagName("title");
    15. NodeList articleURLNodes= xmlDocument.getElementsByTagName("wikipediaUrl");
    16. }catch(Exception ex){
    17. System.out.println(ex.getMessage());
    18. }
    19. return null;
    20. }
    21. }
    Alles anzeigen


    Kann ich irgendwie die NodeLists zurückgeben und aus meiner Activity Klasse darauf zugreifen?


    Würde mich sehr freuen wenn jemand helfen kann :)

    Danke & Viele Grüße!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von starsky128 ()

  • Hat sich erledigt :)

    Habe eine Liste, die die beiden NodeLists enthält zurückgegeben und kann diese dann in meiner Activity wieder aufrufen :)

    Java-Quellcode

    1. List<NodeList> liste = new DownloadXMLTask().execute(wikiAdresse).get();
    2. titel = liste.get(0);
    3. articleURL = liste.get(1);



    funktioniert so wunderbar :)