C
chemistry
Neues Mitglied
- 0
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:
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...
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:
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>
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();
}
}
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();
Zuletzt bearbeitet: