Analysoi XML DOM

Useimmat selaimet sisältävät XML:n lukemiseen ja käsittelemiseen tarkoitetun XML-tulkinnan.

Tulkki muuntaa XML:n JavaScriptin kautta käytettävään objektiin.

Esimerkki

CodeW3C.com tarjoamat esimerkit ovat riippumattomia selaimista ja alustoista. Nämä esimerkit toimivat kaikissa nykyaikaisissa selaimissa.

Lataa ja tulkita XML-tiedosto
Lataa ja tulkita XML-merkkijono

Tulkita XML

Kaikki nykyaikaiset selaimet sisältävät XML:n lukemiseen ja käsittelemiseen tarkoitetun XML-tulkinnan.

Tulkki lukee XML:n muistiin ja muuntaa sen JavaScriptin kautta käytettävään XML DOM-objektiin.

Microsoftin XML-tulkki eroaa muista selaimien tulkkeista. Microsoftin tulkki tukee XML-tiedostojen ja XML-merkkijonojen (tekstin) lataamista, kun taas muut selaimet käyttävät erillistä tulkintaohjelmaa. Kaikissa tulkkeissa on kuitenkin toimintoja XML-puun läpikäymiseen, solmujen katseluun, lisäämiseen ja poistamiseen.

Tässä opetusohjelmassa selitämme, miten luodaan skriptejä, jotka toimivat IE:ssä ja muilla selaimilla.

Ladataan XML Microsoftin XML-tulkilla

Microsoftin XML-tulkki on sisäänrakennettu Internet Explorer 5 ja uudempaan versioon.

Seuraava JavaScript-kappale lataa XML-dokumentin ("books.xml) Lataa analysoija:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("books.xml");

Koodin selitys:

  • Ensimmäinen rivi luo tyhjän Microsoft XML-dokumenttiohjelman objektin
  • Toinen rivi sulkee asynkronisen latauksen, jotta varmistetaan, että analysoija ei jatka skriptin suorittamista ennen kuin dokumentti on täysin ladattu
  • Kolmas rivi kertoo analysoijalle ladata nimeltä "books.xml" dokumenttia

Seuraava JavaScript-kappale lataa nimeltä txt merkkijonon analysoijaan:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);

Huomautus:loadXML() menetelmä käytetään merkkijonon (tekstin) lataamiseen, ja load() Käytetään tiedoston lataamiseen.

XML-analysoija Firefoxissa ja muissa selaimissa

Seuraava JavaScript-kappale lataa XML-dokumentin ("books.xml) Lataa analysoija:

xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("books.xml");

Koodin selitys:

  • Ensimmäinen rivi luo tyhjän XML-dokumenttiolion
  • Toinen rivi sulkee asynkronisen latauksen, jotta varmistetaan, että analysoija ei jatka skriptin suorittamista ennen kuin dokumentti on täysin ladattu
  • Kolmas rivi kertoo analysoijalle ladata nimeltä "books.xml" dokumenttia

Seuraava JavaScript-kappale lataa nimeltä txt merkkijonon analysoijaan:

parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");

Koodin selitys:

  • Ensimmäinen rivi luo tyhjän XML-dokumenttiolion
  • Toinen rivi kertoo analysoijalle ladata nimeltä txt merkkijonoa

Huomautus:Internet Explorer käyttää loadXML() menetelmä analysoimaan XML-merkkijonoa, kun taas muut selaimet käyttävät DOMParser objekti.

XML-tiedoston analysointi - yksi monikirjoittimellinen esimerkki

Seuraava esimerkki luo XML-dokumentin ("books.xml) Lataa XML-tulkki:

<html>
<body>
<script type="text/javascript">
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, jne.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load("books.xml");
  document.write("xmlDoc is loaded, ready for use");
  }
catch(e) {alert(e.message)}
</script>
</body>
</html>

TIY

Virhe: Ylialueen pääsy

Turvallisuussyistä nykyaikaiset selaimet eivät salli ylialueen pääsyä.

Tämä tarkoittaa, että verkkosivu ja se yrittää ladata XML-tiedoston, täytyy olla samalla palvelimella.

CodeW3C.com:n esimerkissä avattu XML-tiedosto sijaitsee CodeW3C.com:n alueella.

Jos aiot käyttää yllä olevaa esimerkkiä omalla verkkosivullasi, sinun täytyy sijoittaa XML-tiedosto omaan palvelimellesi. Muuten xmlDoc.load() tuottaa virheen "Access is denied".

XML-merkkijonon analysointi - yksi monikirjoittimellinen esimerkki

Seuraava koodi luo ja analysoi XML-merkkijonon:

<html>
<body>
<script type="text/javascript">
text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(text);
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, jne.
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
    }
  catch(e) {alert(e.message)}
  }
document.write("xmlDoc is loaded, ready for use");
</script>
</body>
</html>

TIY

Huomautus:Internet Explorer käyttää loadXML()-menetelmää XML-merkkijonon analysointiin, kun taas muut selaimet käyttävät DOMParser-objekti.