Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Auslesen einer (eigenartigen) XML-Datei

Das Thema "Auslesen einer (eigenartigen) XML-Datei" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 06.09.2011, 19:01   #1 (permalink)
Neuer Benutzer

Registriert seit: 06.09.2011
Beiträge: 1
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard Auslesen einer (eigenartigen) XML-Datei

Hallo Leute,

ich habe mich eben hier registriert, da mir dieses Forum bereits bei anderen Fragen weitergeholfen hat und mir die Community zusagt.

Ich möchte auch direkt mit einer Frage starten, bei der mir sie übliche Google- und Foren-Suche bislang nicht weiterhelfen konnte.

Ich möchte für eine Android-App die aktuellsten Daten beim Initialisieren aus dem Internet laden und in eigene Objekte schreiben. Das wäre kein Problem, wäre der Aufbau der XML-Datei anders, aber ich bekomme sie nunmal so vom Server. Auf die Struktur der zu ladenden XML-Datei habe ich keinen Einfluss, da dies eine bereitgestellte Schnittstelle für mehrere Apps ist.

Vereinfacht sieht die XML-Datei so aus:

Code:
<array>
<dict>
<key>ID</key>
<string>1</string>
<key>Name</key>
<string>Irgendein Name</string>
<key>Datum</key>
<string>18.11.2010</string>
<key>Ort</key><string>Beispielhafter Ort</string><key>Uhrzeit</key><string>15:00 - 19:00</string>
</dict>
<dict>
<key>ID</key>
<string>2</string>
<key>Name</key>
<string>Irgendein Name 2</string>
<key>Datum</key>
<string>19.11.2010</string>
<key>Ort</key><string>Beispielhafter  Ort2</string><key>Uhrzeit</key><string>12:00 - 21:00</string>
</dict>
</array>
Ich hätte eigentlich folgenden Code vorgestellt, um z.B. an den Namen zu kommen, aber bei der aktuellen XML weiß ich nicht, wie ich das bewerkstelligen soll...

Code:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(in); // der InputStream aus'm Web
            doc.getDocumentElement().normalize();
            NodeList entries = doc.getElementsByTagName("dict");

            for (int s = 0; s < entries.getLength(); s++) {
                Node entry = entries.item(s);
                if (entry.getNodeType() == Node.ELEMENT_NODE) {
                    Element fstElmnt = (Element) entry;
                    NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("Name");
                    Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
                    NodeList fstNm = fstNmElmnt.getChildNodes();
                    String name = ((Node) fstNm.item(0)).getNodeValue();
                }
            }
Weiß von Euch jemand Rat, wie man an die verschiedenen Attribute in der gegebenen XML und an deren Werte kommen könnte, ohne einen Parser zu bauen? Letzteres ist ja nunmal nicht der Sinn von XML-Dateien...

Ich bin euch für Eure Antworten wirklich dankbar


Beste Grüße,

chemistry


*edit*
Ich habe es nun vorerst so gelöst, es ist aber keinesfalls eine Lösung, die mir besonders gut gefällt:
Code:
int id = Integer.parseInt(nodeList.item(0).getChildNodes().item(0).getNodeValue());
String name = nodeList.item(1).getChildNodes().item(0).getNodeValue();
String date = nodeList.item(2).getChildNodes().item(0).getNodeValue();
String location = nodeList.item(3).getChildNodes().item(0).getNodeValue();

Geändert von chemistry (06.09.2011 um 20:23 Uhr) Grund: Passenderer Titel
chemistry ist offline   Mit Zitat antworten
Alt 06.09.2011, 21:12   #2 (permalink)
Android Experte

Modell: HTC Hero

Registriert seit: 14.10.2009
Beiträge: 612
Abgegebene Danke: 18
Erhielt 42 Danke für 40 Beiträge
Standard AW: Auslesen einer (eigenartigen) XML-Datei

1. Lass die Finger von DOM-Parser. Es ist nur für kleine dokumente tauglich
2. Nimm entweder SAX oder Pull-Parser
3. Benutze einen Databinding-Framework
__________________
_____________________________________________
Meine apps: http://www.pribluda.de/android
Suche Schriftmuster von Prepaid-Auflade-Bons
ko5tik ist offline   Mit Zitat antworten
Alt 08.09.2011, 15:19   #3 (permalink)
Neuer Benutzer
 
Benutzerbild von reddox

Modell: Motorola Defy

Registriert seit: 11.03.2011
Beiträge: 7
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
Standard AW: Auslesen einer (eigenartigen) XML-Datei

Ich würde an der Stelle auch die Finger von einem DOM-Parser lassen, nicht wegen der Dokumentgrösse(ganz im Gegenteil, ich finde gerade dann DOM Parser unersetzlich) sondern vielmehr wegen der eigenartigen Dokumentstruktur - ich wüsste nciht wie man aus einem Baum lesen kann welcher Key zu welchem String gehört.

hier scheint SAX das mittel der Wahl zu sein - ohne konkretes codebeispiel hier meine Vorgehensweise:

Variablen deklarieren:
Code:
List<Map<String,String>> result = new LinkedList<Map<String,String>>();
String keyval[] = new String[2];
int i;
Map<String,String> tmp
Nun wirft der SAX Parser mehrere für dich relevante Events, wobei du verschiedene Aktionen durchführen musst (Funktionsname und Parameterliste der Events abhängig vom Parser).

startElement(String name):
Code:
if(name.equals("dict")) tmp = new HashMap<String,String>();
else if (name.equals("key")) i=0;
else if (name.equals("string")) i=1;
character(String text)
Code:
keyval[i]=text;
endElement(String name)
Code:
if(name.equals("dict")) result.add(tmp);
else if(name.equals("string")) tmp.put(keyval[0], keyval[1]);
Natürlich noch den Code formatieren und klammern wie es sich gehört :-P (hab das eben nur aus der hohlen Hand in den Forumseditor runtergeschrieben)

Jedenfalls solltest du jetzt alle Daten vernünftig hinterlegt haben, um zB an alle Namen heranzukommen:
Code:
for(Map<String,String> data:result) {
  System.out.println("Name: "+data.get("Name"));
}
Ist jetzt doch etwas konkreter geworden und natürlcih nicht ausprobiert, viel Glück ;-)
reddox ist offline   Mit Zitat antworten
Antwort

Stichworte
androis, einlesen, java, xml

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Probleme beim lesen einer XML Datei Raidri Android App Entwicklung 2 03.09.2011 15:53
XML auslesen bei unterschiedlichen ChildNodes jimboo Android App Entwicklung 3 14.11.2010 20:09
XML in App auslesen und verarbeiten SeraphimSerapis Android App Entwicklung 2 25.07.2010 20:05
Probleme beim einlesen von einer XML Datei Raidri Android App Entwicklung 4 20.05.2010 01:00
Probleme beim einlesen von einer XML Datei Raidri Android App Entwicklung 0 27.03.2010 00:32




Du liest gerade: "Auslesen einer (eigenartigen) XML-Datei" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.