Dashboard-Widget: Daten aus XML-Datei?!

simusch

Aktives Mitglied
Thread Starter
Dabei seit
27.09.2004
Beiträge
2.030
Reaktionspunkte
219
hallo zusammen

Ich hoffe, hier ein bisschen Hilfe zu finden :)

Ich möchte ein Widget von mir ein bisschen weiterentwickeln und zwar so, dass die angezeigten Daten nicht aus dem Internet stammen, sondern aus einer XML-Datei...

Ich habe für jeden Tag einen bestimmten Text vorgegeben, der anhand des aktuellen Datums angezeigt werden sollte...

Kann mir jemand einen Hinweis geben, wie ich mit Javascript auf die Daten zugreifen kann?
Ich hab leider mit Javascript so ziemlich keine Erfahrung ausser Copy & Paste ;)

Also:

Heutiges Datum (z.b. in der Form 20060920) ->
Suche in der XML-Datei nach <date>20060920</date> ->
Rückgabe des dort gefundenen Textes

Besten Dank für Anregungen!
Auch schon mit aussagekräftigen Links wäre mir sehr geholfen :) Ich wurde bei Google und MU-Suche nicht fündig...
 
Ich mache sowas immer mit einem Cocoa Plugin. Geht angeblich auch mit JavaScript, das kann ich aber nicht ;)

Alex
 
cocoa plugin für ein dashboard widget? naja, das wird mir wohl ziemlich zu aufwändig...

was ich bis jetzt in andern widgets gefunden habe, sind immer Arrays - jedoch möchte ich das vermeiden, da mir die Daten als XML vorliegen

Simu
 
Wie gesagt, es soll auch XML Parser in JavaScript geben. Aber da ich Cocoa kann, und JavaScript nicht ....

Alex
 
ist denn das wirklich so kompliziert?

wenn man im Dashboard PHP einsetzen könnte, hätte ich die Sache wohl schon erledigt ;)

aber eben, Javascript ist nicht mein Ding :(
 
simusch schrieb:
hallo zusammen
Ich möchte ein Widget von mir ein bisschen weiterentwickeln und zwar so, dass die angezeigten Daten nicht aus dem Internet stammen, sondern aus einer XML-Datei...

Das gesuchte Stichwort ist "XMLHttpRequest".

Infos z.B. hier http://developer.apple.com/internet/webcontent/xmlhttpreq.html

Das Ganze funktioniert auch mit lokalen Dateien, einfach beim Aufruf statt einer URL den Namen angeben.

Ein Beispiel aus dem foo.wdgt:
Code:
var xmlReq = new XMLHttpRequest(); 
xmlReq.open('GET', 'Info.plist', false); 
xmlReq.send(null); 
	
var xml = xmlReq.responseXML;
Und schon hast du in xml den Inhalt der DAtei Info.plist und kannst z.B. über
Code:
xml.getElementsByTagName('date');
auf die entsprechenden Tags zugreifen.
 
hi helge42

danke für den ersten Hinweis :) doch irgendwie will es nicht so ganz...

ich bekomm immer entweder [object NodeList] oder gar keine Ausgabe... NodeList sei wohl etwas wie ein Array?! aber auch mit xml.getElementsByTagName('date')[0]; wird danach einfach nichts angezeigt...

Meine Codes:


.js-Datei:
Code:
var req = new XMLHttpRequest();
req.open("GET", "test.xml", false);
req.send(null);

var xmlDocument = req.responseXML;

var output = xmlDocument.getElementsByTagName('date');

document.getElementById('mainContent').innerHTML = output;

test.xml-Datei:
Code:
<day>
    <date>20060921</date>
    <text>Heute ist der 21. September</text>
</day>
<day>
    <date>20060922</date>
    <text>Heute ist der 22. September</text>
</day>
<day>
    <date>20060923</date>
    <text>Heute ist der 23. September</text>
</day>
<day>
    <date>20060924</date>
    <text>Heute ist der 24. September</text>
</day>


Ich möchte gerne einfach, dass der <text> vom aktuellen Tag angezeigt wird :)
kann ja nicht soo kompliziert sein, oder?
 
Zuletzt bearbeitet:
simusch schrieb:
hi helge42

danke für den ersten Hinweis :) doch irgendwie will es nicht so ganz...

ich bekomm immer entweder [object NodeList] oder gar keine Ausgabe... NodeList sei wohl etwas wie ein Array?! aber auch mit xml.getElementsByTagName('date')[0]; wird danach einfach nichts angezeigt...

In der xml-Variable hast du ein Array mit geparsten XML-Bäumen, nicht einfach ein Array mit Werten. Dafür gibt es dann diverse Zugriffsmethoden wie firstChild, nextSibling etc.

Für eine komplette Übersicht musst du mal eine weiterführende Doku z.B. von W3C bemühen, Stichwort ist neben xmlHttpRequest auch DOM, die Zugriffsmethoden sind bis auf den IE relativ weit standardisiert.

Ich möchte gerne einfach, dass der <text> vom aktuellen Tag angezeigt wird :)
kann ja nicht soo kompliziert sein, oder?

Dafür solltest du auf jeden Fall nicht auf date sondern auf day zugreifen, damit du die zusammengehörigen date/text-Paare behältst.

Ansonsten ist XML immer(!) kompliziert, gerade weil es so einfach ist :)

Helge
 
Zurück
Oben Unten