XML DOM selaimen erot
- Edellinen sivu DOM-traversing nodes
- Seuraava sivu DOM-locating node
Eri selaimet käsittelevät XML-DOMissa tyhjiä tekstipisteitä eri tavoin.
Esimerkki
Alla olevassa esimerkissä käytetään XML-tiedostoa books.xml.
Funktio loadXMLDoc(),sijaitsee ulkoisessa JavaScriptissä ja käytetään XML-tiedoston lataamiseen.
- Näytä solmujen luettelon pituus
- Tässä esimerkissä näytetään solmujen luettelon pituus. IE:ssä ja muissa selaimissa tuloksena on eri.
- Sivuuta solmuja välillä olevat tyhjät tekstit
- Tässä esimerkissä tarkistetaan solmun nodeType ja käsitellään vain elementtisolmuja.
Selaimien erot DOM-parsinnassa
Kaikki nykyaikaiset selaimet tukevat W3C DOM-sääntöjä.
Kuitenkin, selaimet eroavat toisistaan. Tärkeät erot ovat kaksi:
- XML:n lataustavat
- Tyhjien välitysten ja rivinvaihtojen käsittelytavat
“XML DOM analyysi”Tässä luvussa on selitetty eri tavat ladata XML.
Tässä luvussa selitetään eri tavat käsitellä tyhjiä välitä ja rivinvaihtoja.
DOM - tyhjät välit ja rivinvaihdot
XML sisältää usein rivinvaihtoja tai välilyöntejä solmujen välillä. Tämä on yleistä tilanne, kun käytetään yksinkertaista editoria (esim. muistiinpanojournali).
Alla olevassa esimerkissä (muokattu muistiinpanojournalissa) on CR/LF jokaisen rivin välissä ja kaksi välilyöntiä jokaisen alijärjesteen edessä:
<book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book>
Firefox ja muut selaimet käsittelevät tyhjiä välilyöntejä tai rivinvaihtoja tekstipisteinä, kun taas Internet Explorer ei tee niin.
Seuraava koodikappale näyttää, kuinka monta alisolmua (books.xml:n) juurisolmu omaa:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; document.write("Number of child nodes: " + x.length);
Esimerkki selityksestä:
- Käyttämällä loadXMLDoc() Lataa "books.xml"Lataa xmlDoc:ssa"
- Hanki juurisolmun alisolut
- Tulosta alisolmun määrä
Tulostus riippuu käytetystä selaimesta. Firefox tulostaa 9, kun taas IE tulostaa 4.
Sivuuta solmuja välillä olevat tyhjät tekstit
Jos haluat sivuuttaa elementtisolmut välillä olevat tyhjät tekstit solmut, sinun täytyy tarkistaa solmun tyyppi. Elementti-solmun tyyppi on 1:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; for (i=0;i<x.length;i++) { if (x[i].nodeType==1) {// only process element nodes document.write(x[i].nodeName); document.write("<br />"); } }
Esimerkki selityksestä:
- Käyttämällä loadXMLDoc() Lataa "books.xml"Lataa xmlDoc:ssa"
- Hanki juurisolmun alisolut
- Tarkista jokaisen alikohdan solmun tyyppi. Jos solmun tyyppi on "1", se on elementti
- Edellinen sivu DOM-traversing nodes
- Seuraava sivu DOM-locating node