JavaScript Java JavaScript
Working with Javascript
XML
 

Uvod

Kao što ćemo vidjeti program koji se zove XML parser  se može upotrijebiti za učitavanje XML dokumenta u memoriju našeg računala. Kada je dokument učitan njegove informacije se mogu dohvatiti, mijenjati pomoću DOM-a.

Struktura XML dokumenta se također logički reprezentira kao stablo, documentElement predstavlja sam vrh takvog stabla. Taj elemenat ima jedan ili više čvorova potomaka koji čine jednu mrežu čvorova.

Node Interface Model se upotrebljava za pristup individualnim elementima u stablu. Kao primjer metoda childNodes od documentElement objekta se može pozivati sa for/each petljom za pristup sekvencijalno svim čvorovima određenog roditeljskog čvora. Microsoft XML parser podržava najpotrebnije funkcije za navigaciju kroz stablo, pristup elementima i njegovim atributima, umetanje i brisanje čvorova i konvertiranje čvorova natrag u XML dokument

 

The Microsoft XML Parser

Da bi učitali - kreirali ili manipulirali - XML document trebamo XML parser

Microsoft XMLDOM struktura i razvoj prati te podržava programske modele:

  1. JavaScript-a, VBScript, Perl, VB, Java, C++ itd.
  2. W3C XML 1.0 i XML DOM
  3. DTD i validaciju

Ako upotrebljavamo JacaScript u IE 5.0, možemo kreirati objekt  XML dokument-a na slijedeći način:

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

a ako pak upotrebljavamo VBScript:

set xmlDoc = CreateObject("Microsoft.XMLDOM")

te  VBScript u Active Server Page (ASP),

set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")

Učitavanje  XML dokumenta u parser

<?xml version="1.0" ?>
<note time="12:03:46">
  <to>Mirko</to>
  <from>Pero</from>
  <heading>Podsjetnik</heading>
  <body>Nemoj zaboraviti ono za sutra !</body>
  </note>
 

Slijedeći kod učitava postojeći XML dokument (poruka.xml) u XML parser

<script type="text/javascript">

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("poruka.xml")
// ....... tu dolazi obrada dokumenta

</script>

Prva linija skripte kreira instancu Microsoft XML parsera. Treća linija pomoću parsera učitava XML dokument, a druga zaustavlja izvršenje parsera tako dugo je dokument nije dokraja učitan.

Možemo učitati tekst koji predstavlja XML source, ali sa metodom loadXML za rezliku od metode load koju smo upotrijebili u prijašnjem primjeru:

<script type="text/javascript">

var text="<note>"
text=text+"<to>Mirko</to><from>Pero</from>"
text=text+"<heading>Podsjetnik</heading>"
text=text+"<body>Nemoj zaboraviti ono za sutra!</body>"
text=text+"</note>"

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.loadXML(text)
// ....... tu ide daljnja obrada

</script>

Pristup XML elementima preko imena

Ovaj programski odsječak u JavaScript-u čita XML podatke iz XML dokumenta i upisuje ih u varijable(innerText)  pomoću kojih ih kasnije možemo prikazati u obliku HTML dokumenta:

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("poruka.xml")

to.innerText=
xmlDoc.getElementsByTagName("to").item(0).text
from.innerText=
xmlDoc.getElementsByTagName("from").item(0).text
header.innerText=
xmlDoc.getElementsByTagName("heading").item(0).text
body.innerText=
xmlDoc.getElementsByTagName("body").item(0).text

napomena: treba primijetiti da je tekstualni čvor je potomak <from> čvora pa se do vrijednosti teksta(string) dolazi ovako: getElementsByTagName("from").item(0).text, ane kao: getELementsByTagName("from").text

još nekoliko primjera upotrebe DOM-a:

name metoda
<html>
<body>
<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("poruka.xml")

for each x in xmlDoc.documentElement.attributes
document.write(x.name)
next

</script>
</body>
</html>

 

izlaz

time

createCDATASection metoda

<html>
<body>
<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")


set noviNode=xmldoc.createCDATASection("Ovo je CDATASection čvor")
xmldoc.documentElement.appendchild(newnode)

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

</script>
</body>
</html>

izlaz,

<?xml version="1.0"?>

<note time="12:03:46">

<to>Mirko</to>

<from>Pero</from>

<heading>Podsjetnik</heading>

<body>Nemoj zaboraviti ono za sutra!</body>

<![CDATA[Ovo je CDATASection čvor]]>

</note>