einfaches auslesen einer XML Datei

P

pjanfred

Neues Mitglied
0
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:.
 
Ich glaube SAX ist dein Freund ... suche mal nach Java Sax bei Google
 
  • Danke
Reaktionen: pjanfred
schaue ich mir mal an, danke dir schon mal :)
 
Ansonsten verwende doch einfach, natürlich wenns dir möglich ist, JSON. Macht richtig Spaß damit zu arbeiten !
 
schau ich mir mal an, was meinst du mit
wenns dir möglich ist
?
ist das nicht direkt Android kompatible?

Edit:
ah, das is was anderes als XML :)
 
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 :)
 
  • Danke
Reaktionen: pjanfred
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
 
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
 
  • Danke
Reaktionen: pjanfred
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
 
Hi,

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

Grüße
 
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
 
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:
  • Danke
Reaktionen: pjanfred
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();
		}
 
  • Danke
Reaktionen: pjanfred
Hi,

vielen Dank euch beiden, das ist ja viel einfacher als bei XML!
 
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
 
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 :)
 
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:
 
hey, super, danke für die schnelle Antwort, genau das habe ich gesucht :)
 

Ähnliche Themen

wernho
Antworten
11
Aufrufe
719
wernho
wernho
H
Antworten
2
Aufrufe
1.320
Hcman
H
M
  • MikelKatzengreis
Antworten
5
Aufrufe
168
swa00
swa00
Zurück
Oben Unten