Avatar billede fixxxer Nybegynder
16. oktober 2005 - 23:59 Der er 2 kommentarer og
1 løsning

xmlhttprequest parse xml

Jeg sidder og roder med at parse noget xml jeg henter gennem XMLHttpRequest komponentet.

Jeg har noget XML output lignende:


    echo '<?xml version="1.0" standalone="yes"?>';
   
    echo '<response>';
        echo '<message>';
            echo '<name><![CDATA['.$fetch['msg_sender'].']]></name><date>'.date('h:m:s').'</date><msg><![CDATA['.$fetch['msg_text'].']]></msg>';
        echo '</message>';
        echo '<message>';
            echo '<name><![CDATA['.$fetch['msg_sender'].']]></name><date>'.date('h:m:s').'</date><msg><![CDATA['.$fetch['msg_text'].']]></msg>';
        echo '</message>';
        echo '<message>';
            echo '<name><![CDATA['.$fetch['msg_sender'].']]></name><date>'.date('h:m:s').'</date><msg><![CDATA['.$fetch['msg_text'].']]></msg>';
        echo '</message>';
    echo '</response>';


Meningen er naturligvis at det i sidste ende skal blive dynamisk bestemt hvor mange <message>-blokke der vil være..

Mit spørgsmål er nu, hvordan jeg bevæger mig ned gennem XML-elementerne i JavaScript. Indtil videre har jeg forsøgt mig med noget lign. uden resultat:


function loadXMLDoc(url, data)
{
    if (window.XMLHttpRequest)
    {
        req = new XMLHttpRequest();
        req.open("POST", url, false);
        req.send(data);
    }
    else if (window.ActiveXObject)
    {
        req = new ActiveXObject("Msxml2.XMLHTTP.3.0");
        if (req)
        {
            req.open("POST", url, false);
            req.send(data);
        }
    }
    if (response  = req.responseXML.documentElement)
    {
       
        for (i=0;i<response.getElementsByTagName('message').length;i++)
        {
            /* her går jeg i står */
            alert(response.getElementsByTagName('message')[i].firstChild.getElementsByTagName('name')[0]);
            // alt dette er uden tvivl forkert
           
            name            = response.getElementsByTagName('name')[i].firstChild.data;
            date            = response.getElementsByTagName('date')[i].firstChild.data;
            msg                = response.getElementsByTagName('msg')[i].firstChild.data;
        }
    }
}
Avatar billede olebole Juniormester
17. oktober 2005 - 03:27 #1
<ole>

Du kan bruge forskellige metoder til at traversere et XML-dokument - herunder XPath og DOM (som du er igang med). Du kan sige:
    name = response.getElementsByTagName('name')[i].firstChild.nodeValue;

/mvh
</bole>
Avatar billede fixxxer Nybegynder
23. oktober 2005 - 23:58 #2
Tak for det :)

Smid et svar..
Avatar billede olebole Juniormester
24. oktober 2005 - 00:36 #3
Selvtak  *griiiiiiib*  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester