Onkohan olemassa helppoa ratkaisua saada esim. IE ja Firefox lukemaan XML-tiedoston rakennetta samalla tavalla Javascriptilla?
Tähän asti olen tehnyt aina kummallekin selaimelle eri funktiot tähän tyyliin:
function haeKuva(i) { var x = xmlDoc.getElementsByTagName("kuva"); var kuva = x[i].childNodes[0].firstChild.nodeValue + '.jpg'; return kuva; } function haeKuvaFf(i) { var x = xmlDoc.getElementsByTagName("kuva"); var kuva = x[i].childNodes[1].firstChild.nodeValue + '.jpg'; return kuva; }
XML-tiedoston rakenne on tällainen:
<?xml version="1.0" encoding="ISO-8859-1"?> <kuvat> <kuva> <tiedosto>akula</tiedosto> <info>Akula-luokan sukellusvene</info> </kuva> </kuvat>
Ongelma on siis se, että kun IE lukee solmun 0 (=ensimmäinen solmu juuren jälkeen) niin FF käsittää sen juureksi, eli joudun FF:ää varten lukemaan solmun 1. Sitten, kun haluan saada kuvan infotekstin, niin IE lukee sen solmusta 1, mutta FF solmusta 3, koska FF:n mielestä </info><info> on ilmeisesti solmu 2 (??).
Firefoxissa (ja ilmeisesti esimeriksi Operassakin) noiden solmujen välillä on tyhjä tekstisolmu, sillä solmujen välissä on whitespacea. Useampiakin vaihtoehtoja löytyy, mutta itse Prototype-kirjaston ystävänä vetäisisin tuon childNodes-nodelistin Element.cleanWhitespace-funktion läpi ja homma on sillä selvä. Toinen hieman purkempi vaihtoehto olisi hakea esimerkiksi tuo tiedosto-tagin sisältö seuraavasti:
var kuva = x[i].getElementsByTagName("tiedosto")[0].firstChild.nodeValue + '.jpg';
Aihe on jo aika vanha, joten et voi enää vastata siihen.