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;
}
}
}
