Dashboard-Widget: Daten aus XML-Datei?!

  1. simusch

    simusch Thread StarterMacUser Mitglied

    Mitglied seit:
    27.09.2004
    Beiträge:
    2.239
    Zustimmungen:
    188
    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...
     
    simusch, 20.09.2006
  2. below

    belowMacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    Ich mache sowas immer mit einem Cocoa Plugin. Geht angeblich auch mit JavaScript, das kann ich aber nicht ;)

    Alex
     
    below, 21.09.2006
  3. simusch

    simusch Thread StarterMacUser Mitglied

    Mitglied seit:
    27.09.2004
    Beiträge:
    2.239
    Zustimmungen:
    188
    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
     
    simusch, 21.09.2006
  4. below

    belowMacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    Wie gesagt, es soll auch XML Parser in JavaScript geben. Aber da ich Cocoa kann, und JavaScript nicht ....

    Alex
     
    below, 21.09.2006
  5. simusch

    simusch Thread StarterMacUser Mitglied

    Mitglied seit:
    27.09.2004
    Beiträge:
    2.239
    Zustimmungen:
    188
    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, 21.09.2006
  6. helge42

    helge42MacUser Mitglied

    Mitglied seit:
    12.10.2005
    Beiträge:
    239
    Zustimmungen:
    17
    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.
     
    helge42, 22.09.2006
  7. simusch

    simusch Thread StarterMacUser Mitglied

    Mitglied seit:
    27.09.2004
    Beiträge:
    2.239
    Zustimmungen:
    188
    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?
     
    simusch, 22.09.2006
  8. helge42

    helge42MacUser Mitglied

    Mitglied seit:
    12.10.2005
    Beiträge:
    239
    Zustimmungen:
    17
    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.

    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
     
    helge42, 22.09.2006
Die Seite wird geladen...
Ähnliche Themen - Dashboard Widget Daten
  1. niehztog
    Antworten:
    10
    Aufrufe:
    926
    niehztog
    28.02.2010
  2. Drop-Apollo
    Antworten:
    1
    Aufrufe:
    458
    Drop-Apollo
    08.03.2008
  3. Ronny77
    Antworten:
    11
    Aufrufe:
    841
  4. Drop-Apollo
    Antworten:
    5
    Aufrufe:
    634
    Drop-Apollo
    18.02.2008
  5. Blonde25
    Antworten:
    2
    Aufrufe:
    746
    bernie313
    16.01.2007