Dashboard-Widget: Daten aus XML-Datei?!

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von simusch, 20.09.2006.

  1. simusch

    simusch Thread Starter MacUser Mitglied

    Beiträge:
    2.221
    Zustimmungen:
    186
    MacUser seit:
    27.09.2004
    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...
     
  2. below

    below MacUser Mitglied

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

    Alex
     
  3. simusch

    simusch Thread Starter MacUser Mitglied

    Beiträge:
    2.221
    Zustimmungen:
    186
    MacUser seit:
    27.09.2004
    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
     
  4. below

    below MacUser Mitglied

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

    Alex
     
  5. simusch

    simusch Thread Starter MacUser Mitglied

    Beiträge:
    2.221
    Zustimmungen:
    186
    MacUser seit:
    27.09.2004
    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 :(
     
  6. helge42

    helge42 MacUser Mitglied

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

    simusch Thread Starter MacUser Mitglied

    Beiträge:
    2.221
    Zustimmungen:
    186
    MacUser seit:
    27.09.2004
    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: 22.09.2006
  8. helge42

    helge42 MacUser Mitglied

    Beiträge:
    239
    Zustimmungen:
    17
    MacUser seit:
    12.10.2005
    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
     
Die Seite wird geladen...

Diese Seite empfehlen