Das XMLHttpRequest-Objekt besitzt neben der Eigenschaft responseText auch responseXML zur Abfrage des Rückgabewertes. Sofern der Server gueltiges XML liefert, ist responseXML ein XML-DOM-Objekt. Andernfalls enthaelt es den Wert null.
Diese XML Daten werden per Ajax verarbeitet:
<?xml version="1.0" encoding="UTF-8" ?>
<ResultSet resultsAvailable="121" resultsReturned="3">
<Result>
<Title>Aiaia</Title>
<Summary>ein Rest</Summary>
<Url>http://www.aiaia.de/Aiaia/</Url>
</Result>
<Result>
<Title>Yolanda</Title>
<Summary>ein Muelleimer</Summary>
<Url>http://www.aiaia.de/Yolanda/</Url>
</Result>
<Result>
<Title>dadidi</Title>
<Summary>etwas Seltsames ist passiert</Summary>
<Url>http://www.aiaia.de/Dadidi/</Url>
</Result>
</ResultSet>
<script>
request = new XMLHttpRequest();
function dynTable() {
if (request.readyState == 4) {
var xml = request.responseXML;
var anzahl = document.getElementById("Anzahl");
var gesamt = document.getElementById("Gesamt");
//documentElement Wurzelknoten des XML-DOM
//getAttribute greift auf ein Attribut eines Knotens zu
anzahl.innerHTML = xml.documentElement.getAttribute("resultsReturned");
gesamt.innerHTML = xml.documentElement.getAttribute("resultsAvailable");
var tabelle = document.getElementById("Tabelle");
var tbody = document.createElement("tbody");
//Liste aller Knoten mit dem angegebenen Namen
var ergebnisse = xml.getElementsByTagName("Result");
for (var i=0; i<ergebnisse.length; i++) {
// neue Zeile
var zeile = document.createElement("tr");
// drei neue Zellen
var titel = document.createElement("td");
var descr = document.createElement("td");
var url = document.createElement("td");
// pro Zelle ein Textknoten mit den Xml Daten
var titeltext, descrtext, urltext;
for (var j=0; j<ergebnisse[i].childNodes.length; j++) {
var knoten = ergebnisse[i].childNodes[j];
switch(knoten.nodeName) {
case "Title":
titeltext = document.createTextNode(knoten.firstChild.nodeValue);
break;
case "Summary":
descrtext = document.createTextNode(knoten.firstChild.nodeValue);
break;
case "Url":
urltext = document.createTextNode(knoten.firstChild.nodeValue);
break;
}
}
// Textkonten wird an Zelle gehaengt
titel.appendChild(titeltext);
descr.appendChild(descrtext);
url.appendChild(urltext);
// Zelle wird an Zeile gehaengt
zeile.appendChild(titel);
zeile.appendChild(descr);
zeile.appendChild(url);
// Zeile wird an tbody gehaengt
tbody.appendChild(zeile);
}
// tbody wird an Tabelle angehaengt
tabelle.appendChild(tbody);
}
window.onload = function() {
request.open("GET","roman.xml");
request.onreadystatechange = dynTable;
request.send(null);
}
< /script>
|
Sag etwas dazu: