[JavaScript] Auf XML zugreifen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] Auf XML zugreifen

    Hi, ich möchte auf meiner Seite einen Player einbauen, der Name der Lieder und der Pfad liegen in einer XML Datei.
    XML Datei:
    Code:
    <?xml version="1.0" encoding="iso-8859-1"?>
    <songs>
    <song name="Name" pfad="dateipfad" />
    </songs>
    Um den Pfad und das Abspielen kümmert sich Flash. Nun möchte ich mit Javascript den namen anzeigen lassen (erstmal testweise in nem Alert Fenster).

    Das ist das komplette Javascript:
    PHP-Code:
    //globale Variablendeklaration
    var i,songs 0;
    //Funktionen
        //XMLHttpRequest erhalten
    function getXMLHttpRequest(){
        var 
    httpReq null;
        if (
    window.XMLHttpRequest){
            
    httpReq = new XMLHttpRequest();
        }
        else if (
    typeof ActiveXObject !="undefined"){
            
    httpReq = new ActiveXObject("Microsoft.XMLHTTP");
        }
        return 
    httpReq;
    }
        
    //Request absenden evtl. Fehler ausgeben
    function sendRequest(){
        
    req getXMLHttpRequest();
        if (
    req){
            
    req.onreadystatechange auswertung();
            
    req.open("get","www.meinedomain.de/page/Sounds.xml",true);
            
    req.setRequestHeader("Content-Type","text/xml");
            
    req.send(null);
        }
        else{
            
    alert("Player konnte nicht erstellt werden");
        }
    }
        
    //XML Inhalt entgegennehmen und auswerten
    function auswertung(){
        if(
    req.readyState == 4){
            if(
    req.status == 200){
                var 
    xml req.responseText;
                var 
    xmlDOM;
                if (
    typeof ActiveXObject != "undefined"){
                    
    xmlDOM = new ActiveXObject("Microsoft.XmlDom");
                    
    xmlDOM.loadXML(xml);
                }
                else{
                    var 
    parser = new DOMParser();
                    
    xmlDOM parser.parseFromString(xml"text/xml");
                }
                for (var 
    iNode 0iNode xmlDOM.firstChild.childNodes.lengthiNode++) {
                    
    songs++;
                }
                
    schleife();
            }
            else{
                
    alert("XML Datei wurde nicht gefunden");
            }
        }
    }

        
    //Nächstes Lied und Voriges Lied Buttons
    function nextprev (inhalt){
        if (
    inhalt == ">"){
            if (
    == songs 1){
                
    parent.frame2.location.href="meinedomain.de/page/page/music.php?i=0";
            }
            else{
                
    i++;
                
    parent.frame2.location.href="www.meinedomain.de/page/page/music.php?i=" i;
            }
        }
        if (
    inhalt == "<"){
            if (
    == 0){
                
    parent.frame2.location.href="www.meinedomain.de/page/page/music.php?i=" songs 1;
            }
            else{
                
    i--;
                
    parent.frame2.location.href="www.meinedomain.de/page/page/music.php?i=" i;
            }
        }
    }

        
    //Die ständig durchlaufende aktualisierungsschleife
    function schleife(){
        var 
    splitt parent.frame2.location.href.split("=");
        
    splitt[1];
        if (
    songs 1){
            
    parent.frame2.location.href="www.meinedomain.de/page/page/music.php?i=0";
            
    "0";
        }
        var 
    Element xmlDOM.getElementsByTagName("song")[Number(i)];
        var 
    Name Element.getAttribute("Name");
        
    alert(Name);
        
    setTimeout("schleife()",1000);

    Ich rufe die sendRequest() Funktion in der Hauptseite in einem Frame auf. Die Pfade stimmen 100%ig. Nun weiß ich nicht mehr weiter Er gibt mir auch keine einzige meldung aus und ich hab auch schon im DOM-Inspector des Firefox nachgesehn.
    Vllt seht ihr einen Fehler. Vielen dank im Vorraus
    Dulla_Po

  • #2
    Re: [JavaScript] Auf XML zugreifen

    Du möchtest dir noch mal überlegen, was passieren soll, wenn du einem Eventhandler (hier: onreadystatechange) etwas zuweist - und was bei dir aktuell passiert.


    Ausserdem, wozu erzeugst du dir extra noch ein Parser-Objekt?
    Wenn du die Ressource als XML auslieferst, bekommst du doch über XMLHttpRequest gleich ein XML-Dokument, auf dem du mit DOM-Methoden arbeiten kannst.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      ka ich habe das so in einem Buch gefunden, das auch noch nicht sehr alt ist. (Dezember 2006)
      Wenn ich dem event-Handler was zuordne dann führt der das aus (stand auch so im Buch) und wenn er noch nicht 4 ist führt ers nicht aus (abfrage in der anderen Funktion)
      Tut mir leid könntest du mir ein aktuelleres Tutorial geben, oder wo es so ist wie du das meinst.

      Kommentar


      • #4
        Original geschrieben von Dulla_Po
        Wenn ich dem event-Handler was zuordne dann führt der das aus
        Nein, derzeit führst du die Funktion in dem Moment aus, wo du die Zuweisung an den Eventhandler machst.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Aber der ändert sich doch mehrmals und immer dann führt er das aus und erst wenn er auf 4 ist lehnt er die auswertung nicht mehr ab.

          Kommentar


          • #6
            Original geschrieben von Dulla_Po
            Aber der ändert sich doch mehrmals und immer dann führt er das aus
            Nein.

            Du führst die Funktion in dem Moment aus, in dem du die Zuweisung machst - und weisst dem Eventhandler in diesem Augenblick den Rückgabewert der Funktion zu.

            Du möchtest dem Eventhandler die Referenz auf eine Funktion übergeben - anstatt die Funktion an dieser Stelle direkt auszuführen.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Ich habe jetzt ein & Zeichen davor gesetzt, arbeite sonst nur mit PHP. Wie sieht eine Referenz in Javascript aus? Hab unter Google schon gesucht aber ich finde nur auflistungen aller Funktionen^^
              Zuletzt geändert von Dulla_Po; 11.04.2007, 08:34.

              Kommentar


              • #8
                Original geschrieben von Dulla_Po
                Ich habe jetzt ein & Zeichen davor gesetzt

                Wie sieht eine Referenz in Javascript aus? Hab unter Google schon gesucht aber ich finde nur auflistungen aller Funktionen^^
                Dann lern' bitte Suchen.

                Google-Suche nach 'javascript funktionsreferenz' , erster Treffer - da steht's bereits.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Aber wie kann ich erreichen, das der immer auswertung ausführt, wenn sich der Eventhandler ändert? Oder das er wenn der Eventhandler 4 ist diese ausführt, das kann ja ne weile dauern. Würde eine Warteschleife einbauen, while (req.readyState != 4){ warten } aber das ist ja ziemlich ressourcenverballernd oder?

                  Kommentar


                  • #10
                    Original geschrieben von Dulla_Po
                    Aber wie kann ich erreichen, das der immer auswertung ausführt, wenn sich der Eventhandler ändert?
                    Der Eventhandler ändert sich nicht.
                    Oder das er wenn der Eventhandler 4 ist diese ausführt, das kann ja ne weile dauern.
                    Weise - dem - Eventhandler - eine - Funktionsreferenz - zu ...!

                    http://www.galileocomputing.de/openb...vascript23.htm - lesen!
                    Was steht da zum Stichwort Funktionsreferenz?
                    Würde eine Warteschleife einbauen, while (req.readyState != 4){ warten } aber das ist ja ziemlich ressourcenverballernd oder?
                    Nein, das wäre komplett blödsinnig.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Ah, ok also ohne diese beiden Klammern einfach gut werd ich versuchen danke! Aber das Parser Objekt kann ich doch einfach drinne lassen oder? Ich mein wenn ein älterer Browser mal vorbeischippert.

                      Kommentar


                      • #12
                        Original geschrieben von Dulla_Po
                        Aber das Parser Objekt kann ich doch einfach drinne lassen oder? Ich mein wenn ein älterer Browser mal vorbeischippert.
                        Älter als was ...?

                        "Älter als" XMLHttpRequest, womit das ganze sowieso scheitert?
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Wieso scheitert
                          Klappt das garnich was ich vorhabe oder was?

                          Kommentar


                          • #14
                            Oh man ... drücke ich mich so kompliziert aus - oder liegt's vielleicht doch an dir ...?


                            Du wolltest diesen Unfug mit dem extra Parser mit zusätzlicher Kompabilität zu älteren Browsern rechtfertigen.
                            Mein Einwand - ein Browser, der so "alt" ist, dass er mit XMLHttpRequest nichts anzufangen weiss, bei dem scheitert das ganze schon genau daran - da bekommst du also gar nicht erst irgendwas, was du anschliessend parsen könntest.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar

                            Lädt...
                            X