Avatar billede Counx Nybegynder
15. januar 2012 - 16:09 Der er 14 kommentarer og
1 løsning

Få vist billeder via sti i XML fil

Hej folkens.

Har set her på siden, men har ikke kunne finde spørgsmålet før, det jeg har brug for er en måde at loade billeder på via XML.


Det er sat op sådan at XML filen ser sådanne ud:

<Webshop>
  <Vare>
  <Kategori></Kategori>
  <VareNavn></VareNavn>
  <VarePris></VarePris>
  <Beskrivelse></Beskrivelse
  <Billede></Billede>
  </Vare>
</webshop>
Under billede har jeg en sti til et billede på min ftp. Eks: img/vare/computer15.jpg

Dette billede vil jeg så gerne have loadet på min side hvor jeg bruget et script til at hente XML dataen.
(Jeg har 2 scripts som kører, hvor det ene er til chrome/Firefox osv. og det andet er til IE)


Scriptet ser sådanne ud:

<script>
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.open("GET", "edi/webshop.xml", false);
        xmlhttp.send();
        xmlDoc = xmlhttp.responseXML;



        document.write("<table class=TableCSS>");
        document.write("<th class=TableHeader>Varenavn</th>");
        document.write("<th class=TableHeader>Pris</th>");
        document.write("<th class=TableHeader>Billede</th>");

        var it = xmlDoc.evaluate("//Webshop/Vare[Kategori='Ram']", xmlDoc, null, XPathResult.ANY_TYPE, null);

        var curr = it.iterateNext(); // FF 
        while (curr) {
            document.write("<tr>");
            document.write("</td><td class=TableData>");
            document.write(curr.getElementsByTagName("VareNavn")[0].childNodes[0].nodeValue);
            document.write('</td><td align="right" class=TableData>')
            document.write(curr.getElementsByTagName("VarePris")[0].childNodes[0].nodeValue);
            document.write(',-');
            document.write('</td><td align="right" class=TableData>')
            document.write(curr.getElementsByTagName("Billede")[0].childNodes[0].nodeValue);
            document.write("</td></tr>");
            curr = it.iterateNext();
        }
        document.write("</table>");

    }
</script>


Jeg har prøvet følgende:

document.write('<asp:image src="' + curr.getElementsByTagName("Billede")[0].childNodes[0].nodeValue + '" alt="Picture"/>');

Hvordan kan dette gøres eller er der en nemmere måde at hente XML filen på?

På forhånd tak. :)
/// Counx
Avatar billede arne_v Ekspert
15. januar 2012 - 16:47 #1
<asp:image er et ASP.NET tag. Saadanne udfoeres server side. Derfor virker det ikke at generere et client side via JavaScript.

Proev at generer et:

<img src="...">

HTML tag.
Avatar billede Counx Nybegynder
15. januar 2012 - 19:06 #2
Det fungerer heller ikke, når jeg sætter denne kode ind:
document.write('img src="' + curr.getElementsByTagName("Billede")[0].childNodes[0].nodeValue); +'" alt="Picture"/>';

Så henter den kun en vare ud af 6 på siden og det er ikke engang en med billede til. :S

Du kan se på http://expressdata.dk/Ram.aspx hvordan det ser ud.
Avatar billede arne_v Ekspert
15. januar 2012 - 19:20 #3
document.write('img src

mangler der ikke en < ??
Avatar billede olebole Juniormester
15. januar 2012 - 19:30 #4
<ole>

Du mangler også en parentesafslutning:

document.write('<img src="' + curr.getElementsByTagName("Billede")[0].childNodes[0].nodeValue); + '" alt="Picture"/>'); // <-- dér

Desuden smider Firefox en fejl, som påstår, at curr.getElementsByTagName("Billede")[0].childNodes[0] is undefined - altså at du formodentlig ikke har sådan et element i XML'en

/mvh
</bole>
Avatar billede olebole Juniormester
15. januar 2012 - 19:34 #5
Jeg kan se på responsen, at dit første Billede element er tomt og derfor ikke har nogen childNodes:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Webshop>
<Vare>
<Kategori>Adapter</Kategori>
<VareNavn>DVI/VGA adapter</VareNavn>
<VarePris>49</VarePris>
<Beskrivelse></Beskrivelse>
<Billede></Billede>
</Vare>
Avatar billede Counx Nybegynder
15. januar 2012 - 19:45 #6
Ja det gir jo meget god mening. :D
Har prøvet at smide et gyldigt link i den første under kategori ram, men når den henter stien, så stopper den ikke igen og smider mine tables med i stien. :S
Avatar billede Counx Nybegynder
15. januar 2012 - 19:47 #7
Men jeg kan se at der er lidt skiftende med om der er brugt " eller ' i scriptet, selvom det er et jeg har hentet. :S
Det er vel det som er skyld i den mærkelige sti?
Avatar billede olebole Juniormester
15. januar 2012 - 19:50 #8
Nej, den mærkelige sti skyldes det, du skriver - ikke noget med gåseøjne  =)
Avatar billede olebole Juniormester
15. januar 2012 - 19:51 #9
- eller rettere: Jeg tror ikke, jeg helt forstår, hvad du skriver i #6 og #7  =)
Avatar billede Counx Nybegynder
15. januar 2012 - 19:54 #10
Hov havde ikke lige set den første besked, men det har jeg rettet nu.
Nu har den fjernet hele tablen. :S
Avatar billede Counx Nybegynder
15. januar 2012 - 20:01 #11
Okay, men det var hvis jeg gik ind og tjekke source på google chrome, så smed den den rigtig sti og en masse tags til min table bagefter, som om at der manglede et lukke tag på billed stien. (:

Eks. http://expressdata.dk/edi/ram-ddr2-2gb.jpg</td></tr>"en masse andre tegn"</table>
Avatar billede olebole Juniormester
15. januar 2012 - 20:01 #12
Du har stadig en fejl. Der er nu et semikolon og en slutparantes formeget efter nodeValue. Prøv sådan:

document.write('<img src="' + curr.getElementsByTagName("Billede")[0].childNodes[0].nodeValue + '" alt="Picture"/>');
Avatar billede Counx Nybegynder
15. januar 2012 - 20:11 #13
Uha det var jo pragfult, lidt tilretning i koden af en anden person er jo aldrig tosset, når man selv har stirret sig blind på det. :P

Det virker nu og jeg er utolig taknemlig. :D
Tusinde tak for hjælpen, du kan bare smide et svar. :)
Avatar billede olebole Juniormester
15. januar 2012 - 20:22 #14
Ellers tak, jeg samler ikke point, så de må gå til Arne  =)
Avatar billede Counx Nybegynder
14. maj 2012 - 12:09 #15
Svar
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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