Avatar billede mik28 Seniormester
01. oktober 2011 - 13:06 Der er 10 kommentarer og
2 løsninger

XPath

Hej Eksperter

Jeg sidder og summer over hvordan man lettest læser og viser værdier fra en xml-fil clientside. Er der en som kan vise mig et eksempel, men f.x JQuiry? I princippet skal det bare kunne læse værdierne og printe dem ud.
Avatar billede mik28 Seniormester
01. oktober 2011 - 13:08 #1
Den webservice jeg bruger returener i princippet

<xml>
  <vaerdi1>Noget</vaerdi1>
  <vaerdi2>Noget</vaerdi2>
  <vaerdi3>Noget</vaerdi3>
Avatar billede mik28 Seniormester
01. oktober 2011 - 13:23 #2
Kan jeg mon gøre således

<html>
<body>
<script type="text/javascript">
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}

xml=loadXMLDoc("books.xml");
path="/bookstore/book/author"
// code for IE
if (window.ActiveXObject)
{
var nodes=xml.selectNodes(path);

for (i=0;i<nodes.length;i++)
  {
  document.write(nodes[i].childNodes[0].nodeValue);
  document.write("<br />");
  }
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
var result=nodes.iterateNext();

while (result)
  {
  document.write(result.childNodes[0].nodeValue);
  document.write("<br />");
  result=nodes.iterateNext();
  }
}
</script>

</body>
</html>

Skal jeg ikke importerer et js bibliotek?
Avatar billede mik28 Seniormester
01. oktober 2011 - 13:24 #3
Kan jeg mon bare udskifte books.xml med url'en til min webservice, sålænge det er på samme domæne

xml=loadXMLDoc("books.xml");
Avatar billede jokkejensen Novice
01. oktober 2011 - 15:23 #4
$(document).ready(function(){
    $.ajax({
        type: "GET",
        url: "books.xml",
        dataType: "xml",
        success: function(xml) {
var vaerdi1 = $(xml).find('vaerdi1').text();
alert(vaerdi1);
}
});

Havde nodenavnene heddet det samme kunne du:

$(xml).find('vaerdi').each(function(){
alert($(this).text())
});
Avatar billede olsensweb.dk Ekspert
01. oktober 2011 - 17:19 #5
uden brug af jquery

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>test</title>
</head>
<body>
<h1>W3Schools Internal Note</h1>
<h1>http://www.w3schools.com/xml/xml_dom.asp</h1>
<div>
<b>værdi 1:</b> <span id="value1"></span><br />
<b>værdi 2:</b> <span id="value2"></span><br />
<b>værdi 3:</b> <span id="value3"></span>
</div>
<script type="text/javascript">
var xmlhttp=new XMLHttpRequest(); // gider ikke teste om XMLHttpRequest() er understøttet
var sURL = "http://olsensweb.dk/test/books.xml";
xmlhttp.open("GET",sURL,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseText;
xmlDoc=xmlhttp.responseXML;
document.getElementById("value1").innerHTML=xmlDoc.getElementsByTagName("vaerdi1")[0].childNodes[0].nodeValue;
document.getElementById("value2").innerHTML=xmlDoc.getElementsByTagName("vaerdi2")[0].childNodes[0].nodeValue;
document.getElementById("value3").innerHTML=xmlDoc.getElementsByTagName("vaerdi3")[0].childNodes[0].nodeValue;
</script>
</body>
</html>


books.xml
<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <vaerdi1>Noget1</vaerdi1>
  <vaerdi2>Noget2</vaerdi2>
  <vaerdi3>Noget3</vaerdi3>
</xml>


demo http://olsensweb.dk/test/experten/spm/948389/
Avatar billede mik28 Seniormester
06. oktober 2011 - 15:28 #6
Hvilken version af jquery skal jeg bruge
Avatar billede olsensweb.dk Ekspert
06. oktober 2011 - 16:11 #7
>Hvilken version af jquery skal jeg bruge
det må være et spørgsmål til #4, jeg har afprøvet den med den nyeste, #5 bruger jo ikke jquery, tilgengæld er der en lille fejl: linjen "xmlDoc=xmlhttp.responseText;" skal slettes, det er ikke graverende, da variablen overskrives med det sammen

et eks på #4 er lavet her
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>test</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
</head>
<body>
<div>
<b>værdi 1:</b> <span id="value1"></span><br />
<b>værdi 2:</b> <span id="value2"></span><br />
<b>værdi 3:</b> <span id="value3"></span>
</div>
<script type="text/javascript">
// var sURL = "books.xml";
var sURL = "http://olsensweb.dk/test/books.xml";
// var sURL = "http://localhost/test/books.xml";
    $.ajax({       
        type: "GET",
        url: sURL,       
        dataType: "xml",
        success: function(xml) {            
            document.getElementById("value1").innerHTML = $(xml).find('vaerdi1').text();
            document.getElementById("value2").innerHTML = $(xml).find('vaerdi2').text();
            document.getElementById("value3").innerHTML = $(xml).find('vaerdi3').text();               
        }
    });
</script>
</body>
</html>


demo http://olsensweb.dk/test/experten/spm/948389/indexjq.html
samt demo #4 er opdateret
Avatar billede mik28 Seniormester
07. oktober 2011 - 10:01 #8
Tak for hjælpen. Ligger i nogle svar
Avatar billede olsensweb.dk Ekspert
07. oktober 2011 - 15:32 #9
får du her
Avatar billede jokkejensen Novice
09. oktober 2011 - 12:43 #10
Ehmmm, er det ikke mit kode der blev accepteret der ?
Avatar billede jokkejensen Novice
09. oktober 2011 - 12:58 #11
sry, så ikke jeg fik points
Avatar billede mik28 Seniormester
09. oktober 2011 - 12:58 #12
Jo. Har du ikke fået points.

Faktisk endte jeg med ikke at bruge nogle af løsningerne, men fandt selv en. Var nød til at lave det serverside og så genererer en quirystreng hvor jeg så har henter variablerne klientside. En ,i min verden, lidt klodset løsning, men sådan blev det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester