Vraag & Antwoord

Webprogrammeren & scripting

[DOM] HTML-lijst maken van XML-data via Javascript

3 antwoorden
  • Ik heb een JavaScript gemaakt dat uit een XML-bestand (opgeroepen via XMLHttpRequest) met de volgende structuur: [code:1:06b55f7db4]<?xml version="1.0"> <items> <item id="1">Inhoud</item> <item id="2">Nog meer inhoud</item> ...etc... </items>[/code:1:06b55f7db4] 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:06b55f7db4]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); }[/code:1:06b55f7db4] 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 :)
  • En wat als je <items> opvraagt en vervolgende door de <item> childNodes gaat wandelen? :-? Ik heb ook een keer met JavaScript XML-bewerking lopen prutsen, maar omdat destijds de site waarop ik het probeerde niet goed genoeg volgens de XHTML-specificaties geschreven was ben ik voortijdig gestopt. Ik weet wel dat het een hele klus is... - Bas
  • Trouwens, nog even terugkijkend naar je vraag wil ik het volgende opmerken: Je code is al in staat om te zien hoeveel <item>-elementen je hebt, en al je <item>-elementen hebben een uniek id van "1" t/m het "aantal <item>-elementen". Is het dan niet handig om een loopje te maken en de elementen op te vragen met getElementById()? 't Is maar een idee, maar als je op deze manier de problematiek van je huidige aanpak kan omzeilen is het het overwegen waard, nietwaar? Succes, en laat even weten wat je ervan bakt... ;) - Bas

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.