XML-fila inneholder i tillegg til CSV-fila CSV geografiske koordinater for
en boks som omgir landet.
Dataene ser slik ut:
land som xml
Den komplette adressen er: https://borres.hiof.no/wep/data/geografi/land.xml
Vi vil lage en liste med
navnene på landene i fila. Vi gjør det med en "håndskrevet" AJAX-request og ved hjelp av jQuery.
Basis AJAX
Javascript-koden blir slik:
_script1.js
var myRequest=null;
var url="https://borres.hiof.no/wep/data/geografi/land.xml";
function startXMLHttpRequest()
{
myRequest = new XMLHttpRequest();
if (myRequest) {
myRequest.onreadystatechange = processRequestChange;
myRequest.open("GET", url, true);
myRequest.send(null);
}
else{
alert("Nettleseren henger ikke med");
}
}
function processRequestChange()
{
// if the request is complete and successfull
if (myRequest.readyState == 4) {
if ((myRequest.status == 200) || (myRequest.status == 304))
{
useDom(myRequest.responseXML);
}
else
alert("Problem med tilgang til data:\n" + myRequest.statusText);
}
}
function useDom(doc){
// accumulate the result here
var result="";
// find all country names
var countries= doc.getElementsByTagName('countryName');
// walk country names
for(var i=0; i < countries.length; i++){
result+="<li>"+countries[i].firstChild.nodeValue+"</li>";
}
elt=document.getElementById("dump1");
elt.innerHTML='<ul>'+result+'</ul>';
}
function getIt(){
$.ajax({
url:"https://borres.hiof.no/wep/data/geografi/land.xml",
success:function(data,status,xhr)
{
useIt(xhr.responseXML);
},
error:function(data)
{
document.getElementById("dump2").innerHTML=data.statusText;
}
});
}
function useIt(doc){
// accumulate the result here
var result="";
// find all country names
var countries= doc.getElementsByTagName('countryName');
// walk country names
for(var i=0; i < countries.length; i++){
result+="<li>"+countries[i].firstChild.nodeValue+"</li>";
}
elt=document.getElementById("dump2");
elt.innerHTML='<ul>'+result+'</ul>';
}
Vi kan bruke XPath. Det gir ingen gevinst her, men for demonstrasjonens skyld.
Javascript-koden blir slik:
_script3.js
function getItXP(){
$.ajax({
url:"https://borres.hiof.no/wep/data/geografi/land.xml",
success:function(data,status,xhr)
{
useItXP(xhr.responseXML);
},
error:function(data)
{
document.getElementById("dump3").innerHTML=data.statusText;
}
});
}
// using xpath
function useItXP(doc){
// accumulate the result here
var result="";
// find all country names
var countryNameNodes= doc.evaluate('//countryName', doc, null, XPathResult.ANY_TYPE, null);;
// walk country names
var nod=countryNameNodes.iterateNext();
while(nod){
result+="<li>"+nod.firstChild.nodeValue+"</li>";
nod=countryNameNodes.iterateNext();
}
elt=document.getElementById("dump3");
elt.innerHTML='<ul>'+result+'</ul>';
}