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

einfaches auslesen einer XML Datei

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von pjanfred, 04.06.2012.

  1. pjanfred, 04.06.2012 #1
    pjanfred

    pjanfred Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    04.06.2012
    Hallo alle zusammen,

    bezüglich der Entwicklung einer App suche ich eine einfache Art XML auszulesen, ähnlich dem simpleXML von PHP. Leider haben sämtliche Beispiele jedoch einen Umfang von mehr als 100 Zeilen oder sind augenscheinlich sehr überladen.

    Sämtliche Suchen via Google etc. brachten mich nicht zum Erfolg :(
    Ich gebe mal ein Beispiel wie ich es gerne hätte:

    XML
    Code:
    <?xml version="1.0"?>
    <sun>
    <session>
    <id>a63fc8c5d915e1f1a40f40e6c7499863</id>
    </session>
    </sun>
    


    JAVA for Android

    Code:
    XMLClass xml = new XMLClass(stringMitXML);
    xml.getNode("sun").getNode("session").getNode("id").getText();
    // Fertig
    
    Kennt da jemand eine zu empfehlende Klasse bzw. Bibliothek oder habe ich Ansprüche an einen XML Reader die nicht erfüllbar sind?

    Gruß
    Jan

    PS: Das ist mein erster Beitrag :) Falls er etwas indigniert klingen sollte, so bitte ich dies zu entschuldigen :blushing:.
     
  2. Hagbard235, 04.06.2012 #2
    Hagbard235

    Hagbard235 Android-Experte

    Beiträge:
    481
    Erhaltene Danke:
    60
    Registriert seit:
    09.06.2009
    Ich glaube SAX ist dein Freund ... suche mal nach Java Sax bei Google
     
    pjanfred bedankt sich.
  3. pjanfred, 04.06.2012 #3
    pjanfred

    pjanfred Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    04.06.2012
    schaue ich mir mal an, danke dir schon mal :)
     
  4. orium, 04.06.2012 #4
    orium

    orium Android-Hilfe.de Mitglied

    Beiträge:
    68
    Erhaltene Danke:
    11
    Registriert seit:
    02.04.2012
    Phone:
    Nexus 5
    Ansonsten verwende doch einfach, natürlich wenns dir möglich ist, JSON. Macht richtig Spaß damit zu arbeiten !
     
  5. pjanfred, 04.06.2012 #5
    pjanfred

    pjanfred Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    04.06.2012
    schau ich mir mal an, was meinst du mit
    ?
    ist das nicht direkt Android kompatible?

    Edit:
    ah, das is was anderes als XML :)
     
  6. orium, 04.06.2012 #6
    orium

    orium Android-Hilfe.de Mitglied

    Beiträge:
    68
    Erhaltene Danke:
    11
    Registriert seit:
    02.04.2012
    Phone:
    Nexus 5
    Richtig, meinte nur eben "wenns dir möglich ist" von wegen, wenn dus eben nicht beeinflussen kannst, welche Datenstruktur geliefert bekommst. Aber wenn dus frei bestimmen kannst, ist im Bereich Android JSON mein klarer Favorit :)
     
    pjanfred bedankt sich.
  7. pjanfred, 04.06.2012 #7
    pjanfred

    pjanfred Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    04.06.2012
    noch bin ich in einer Phase wo ich es beeinflussen kann :) ich muss nur noch herrausfinden ob man das auch in iOS und Windows 7 Phone genauso leicht verarbeiten kann :) danke dir schonmal
     
  8. orium, 04.06.2012 #8
    orium

    orium Android-Hilfe.de Mitglied

    Beiträge:
    68
    Erhaltene Danke:
    11
    Registriert seit:
    02.04.2012
    Phone:
    Nexus 5
    Ansonsten wenn du Probleme/Fragen mit der Verarbeitung von JSON Daten hast schreib mir einfach, bin derzeit an nem Projekt dran, bei dem ich JSON Daten geliefert bekomme und mittels Android eben verarbeite.

    Grüße
     
    pjanfred bedankt sich.
  9. pjanfred, 06.06.2012 #9
    pjanfred

    pjanfred Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    04.06.2012
    Hi orium,

    vielen danke. Ich finde JSON nicht nur gut, nein ich bin davon begeistert und habe eben entschieden es für mein Projekt zu verwenden. Das erstellen via PHP ist bereits umgestellt, jetzt muss ich nur noch das auslesen via JAVA realisieren und sobald das geklappt hat bin ich glücklich :)

    Gruß
    Jan
     
  10. orium, 06.06.2012 #10
    orium

    orium Android-Hilfe.de Mitglied

    Beiträge:
    68
    Erhaltene Danke:
    11
    Registriert seit:
    02.04.2012
    Phone:
    Nexus 5
    Hi,

    freut mich, dass ich dir helfen konnte :) Mir macht es auch richtig Spaß damit zu arbeiten :p

    Grüße
     
  11. pjanfred, 06.06.2012 #11
    pjanfred

    pjanfred Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    04.06.2012
    Hi,

    vieleicht hast du ja Lust mir ein Beispiel zu geben, das ist mein JSON:

    Code:
    {"session":{"id":"b3f61131b6eceeb2b14835fa648a48ff"}}
    
    und so erzeuge ich mein JSONObject:
    Code:
            try {
                JSONObject jsonObject = new JSONObject(jsonString);
    
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
    Nur irgendwie habe ich jetzt keine Ahnung wie ich an die id komme.
    Über deine Hilfe würde ich mich sehr freuen :)

    Gruß
    Jan
     
  12. orium, 06.06.2012 #12
    orium

    orium Android-Hilfe.de Mitglied

    Beiträge:
    68
    Erhaltene Danke:
    11
    Registriert seit:
    02.04.2012
    Phone:
    Nexus 5
    Ach gerade verguckt sorry..

    Also: Dein jsonObject enthält ein weiteres jsonObject.

    ich würde hingehen:

    Code:
          JSONObject jsonObject = new JSONObject(jsonString);
          JSONObject jsonSession = jsonObject.getJSONObject("session");
    
    Nun hast du vom "Root" JSON Object was dein ganzes Element entspricht ein weiteres Object erstellt, was nun das Session object ist.
    um nun Werte von dem Object ziehen zu können kannst du:

    Code:
        jsonSession.get("id");
    
    machen oder eben wenn du einen numerischen Wert hast und einen Integer zurückhaben willst

    Code:
       jsonSession.getInt("id");
    
    machen
     
    Zuletzt bearbeitet: 06.06.2012
    pjanfred bedankt sich.
  13. Tom299, 06.06.2012 #13
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Code:
    		JSONObject jObject = null;
    		try {
    			jObject = new JSONObject("{session:{id:b3f61131b6eceeb2b14835fa648a48ff}}");
    		} catch (JSONException e) {
    			e.printStackTrace();
    		}
    		System.out.println(jObject.toString());
    		try {
    			String strSession = jObject.getString("session");
    			if (strSession != null) {
    				System.out.println(strSession);
    			}
    		} catch (JSONException e) {
    			e.printStackTrace();
    		}
    
    		JSONObject obj = null;
    		try {
    			obj = jObject.getJSONObject("session");
    			System.out.println(obj.toString());
    			String strId = obj.getString("id");
    			if (strId != null) {
    				System.out.println(strId);
    			}
    		} catch (JSONException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
     
    pjanfred bedankt sich.
  14. pjanfred, 06.06.2012 #14
    pjanfred

    pjanfred Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    04.06.2012
    Hi,

    vielen Dank euch beiden, das ist ja viel einfacher als bei XML!
     
  15. orium, 06.06.2012 #15
    orium

    orium Android-Hilfe.de Mitglied

    Beiträge:
    68
    Erhaltene Danke:
    11
    Registriert seit:
    02.04.2012
    Phone:
    Nexus 5
    Musst "aufpassen":

    { stellt immer ein JSON Object dar. [ stellt ein JSONArray da, habe mich da auch schonmal vertan.

    Hier ein Beispiel von JSON - Wikipedia, the free encyclopedia
    Code:
     {
         "firstName": "John",
         "lastName" : "Smith",
         "age"      : 25,
         "address"  :
         {
             "streetAddress": "21 2nd Street",
             "city"         : "New York",
             "state"        : "NY",
             "postalCode"   : "10021"
         },
         "phoneNumber":
         [
             {
               "type"  : "home",
               "number": "212 555-1234"
             },
             {
               "type"  : "fax",
               "number": "646 555-4567"
             }
         ]
     }
    
    Hier erstellt man erst ein Object des ganzen, von dem Object kannst du firstName, lastName, age und adresse ganz leicht mit dem get("x") eben abrufen. Für "address" muss man dann, wie in deinem Beispiel, ein neues jsonObject anlegen und kann über das Object sich dann die address Attribute ziehen.

    So, für die phoneNumber, Achtung hier: [ ], musst du innerhalb des RootObject ein neuen JSON Array "phoneNumber" anlegen. Innerhalb dessen JSON Array kannst du dann mittels einer for schleife mit der Begrenzung auf jsonArray.length() die Elemente durchgehen.
    Innerhalb der schleife dann z.b. mit JSONObject xy = jsonArray.getJSONObject(i) und kannst dann eben wieder ganz normal die Werte abrufen.


    Hoffe das ganze war/ist jetzt nicht zu verwirrend...kannst mir ja auch einfach nochmal PM schreiben oder so mit Fragen wenn du was genauer wissen willst
     
  16. pjanfred, 07.06.2012 #16
    pjanfred

    pjanfred Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    04.06.2012
    Ich glaube ich habe es so grob verstanden, wenn meine App in einem Status ist das ich das brauche und ich es nicht verstehe, werde ich mich aber sicherlich noch mal an dich wenden :)
     
  17. lis@, 01.03.2013 #17
    lis@

    lis@ Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    0
    Registriert seit:
    01.03.2013
    Hallo zusammen,
    ich bin gerade an einem ähnlichen Problem und habe mich entschieden, es mal mit JSON zu versuchen.

    Ich habe eine Menüstruktur, die in der App verwendet werden soll. Diese Struktur sollte am besten geändert(z.B. die Namen oder)/erweitert werden können, ohne in die App direkt eingreifen zu müssen, da später sonst ja jeder Benutzer ein Update wegen eines neuen Menüpunktes machen müsste.

    Ich würde das JSON File also auf einem Webserver lagern. Was ihr hier beschrieben habt, klingt alles sehr gut, nur hab ich ein grundlegendes (evtl. ziemlich simples) Problem: Wie komme ich an den JSONString aus der Datei die auf dem Webserver liegt?

    new JSONObject(???) :blushing:
     
  18. orium, 01.03.2013 #18
    orium

    orium Android-Hilfe.de Mitglied

    Beiträge:
    68
    Erhaltene Danke:
    11
    Registriert seit:
    02.04.2012
    Phone:
    Nexus 5
    lis@ bedankt sich.
  19. lis@, 04.03.2013 #19
    lis@

    lis@ Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    0
    Registriert seit:
    01.03.2013
    hey, super, danke für die schnelle Antwort, genau das habe ich gesucht :)
     

Diese Seite empfehlen