Ik heb een JavaScript gemaakt dat uit een XML-bestand (opgeroepen via XMLHttpRequest) met de volgende structuur:
een HTML-lijdt (ul, li enzovoorts) hoort te maken. Het probleem is dat ik via de W3C-DOM functies geen data kan uitlezen uit de <item> elementen. Het script ziet wel dat er 17 (in het geval van het voorbeeld dus 2) <item> elementen staan, maar als ik dan vervolgens de inhoud van dat element probeer op te roepen met nodeValue, textNodeValue of zelfs innerHTML wordt er steevast "undefined" gegeven. Het script ziet er als volgt uit:
Voor de volledigheid: "http" is een XmlHttpRequest object, "site" is een verwijzing naar de <div> waarin de lijst moet komen en het XML-bestand heeft als Content-type text/xml. Het script is ietwat versimpeld omdat het anders teveel ruimte zou innemen. Hulp zou ik erg op prijs stellen
code:
1
2
3
4
5
6
| <?xml version="1.0"> <items> <item id="1">Inhoud</item> <item id="2">Nog meer inhoud</item> ...etc... </items> |
een HTML-lijdt (ul, li enzovoorts) hoort te maken. Het probleem is dat ik via de W3C-DOM functies geen data kan uitlezen uit de <item> elementen. Het script ziet wel dat er 17 (in het geval van het voorbeeld dus 2) <item> elementen staan, maar als ik dan vervolgens de inhoud van dat element probeer op te roepen met nodeValue, textNodeValue of zelfs innerHTML wordt er steevast "undefined" gegeven. Het script ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| function showOverview(getWhat) {
http.open('GET', 'xml.php?get=' + getWhat);
http.onreadystatechange = function() {
if (http.readyState == 4) {
if (!http.responseXML) {
alert('Fout: ' + http.responseText);
}
var bigList = document.createElement('ul');
var li = document.createElement('li');
var a = document.createElement('a');
var XML = http.responseXML;
for (i = 0; i < XML.getElementsByTagName('item').length; i++) {
var itemData = XML.firstChild.childNodes[i].textNodeValue;
var itemSub = li.cloneNode(false);
var itemLink = a.cloneNode(false);
itemLink.href = 'javascript: getPage(\'' + itemData + '\');';
itemLink.appendChild(document.createTextNode(itemData));
itemSub.appendChild(itemLink);
bigList.appendChild(itemSub);
}
site.appendChild(bigList);
}
}
http.send(null);
} |
Voor de volledigheid: "http" is een XmlHttpRequest object, "site" is een verwijzing naar de <div> waarin de lijst moet komen en het XML-bestand heeft als Content-type text/xml. Het script is ietwat versimpeld omdat het anders teveel ruimte zou innemen. Hulp zou ik erg op prijs stellen