Avatar billede myztic Nybegynder
08. juni 2007 - 12:08 Der er 4 kommentarer og
2 løsninger

XML og Undefined problem

Heysan - har lidt problemer med at lokalisere et problem her og har nu siddet og søgt herinde i en lille times tid.

Det er til noget projekt hvor der skal være noget film-forside, og mit XML vil ikke loade ind ordentlig.

Der kommer eksempler herunder på både koden, traces og XML-filen.

Mit problem er at den melder undefined eller Null, den får aldrig rigtig fat i dataene.

----
Koden
----
//F¯rst skabes vores XML objekt!

xmlDok = new XML();

xmlDok.ignoreWhite=true;

xmlDok.onLoad = convertXML; // funktion fra lÊngere nede

xmlDok.load("top10.xml");



function convertXML() {   

  if (this.loaded) {

    for (i=0;i<10;i++) {   

      movrank = xmlDok.firstChild.childNodes[i].attributes.rank;

      movrank = int(movrank);

      titlearray[movrank] = xmlDok.firstChild.childNodes[i].childNodes[0].nodeValue;

      genrearray[movrank] = xmlDok.firstChild.childNodes[i].childNodes[1].nodeValue;

      ratingarray[movrank] = xmlDok.firstChild.childNodes[i].childNodes[2].nodeValue;

      lejearray[movrank] = xmlDok.firstChild.childNodes[i].childNodes[3].nodeValue;

      imgarray[movrank] = xmlDok.firstChild.childNodes[i].childNodes[4].nodeValue;

      thumbarray[movrank] = xmlDok.firstChild.childNodes[i].childNodes[5].nodeValue;

      descarray[movrank] = xmlDok.firstChild.childNodes[i].childNodes[6].nodeValue;

 

      trace("i: " + i);

      trace("rank: " + xmlDok.firstChild.childNodes[i].attributes.rank);

      trace("title: " + xmlDok.firstChild.childNodes[i].childNodes[0].nodeValue);

      trace("img: " + xmlDok.firstChild.childNodes[i].childNodes[4].nodeValue);

    } // End of 'for loop'

  } // End of 'if {this.loaded}

}// End of xmlload function


-------------------------------------
Traces - dem der ses i bunden af funktionen, der er mere men det er  bare mere af det samme...
-------------------------------------
i: 0

rank: 1

title: null

img: null

i: 1

rank: undefined

title: undefined

img: undefined

i: 2

rank: undefined

title: undefined

img: undefined

-------------------------
XML - dette er lige et udsnit, der er op til rank 10 og filen er afsluttet korrekt. (</top10>)
-------------------------
<?xml version="1.0" encoding="iso-8859-1"?>

<top10>

  <movie rank="1">

    <title>Sin City</title>

    <genre>Action/StoryTelling</genre>

    <rating>18+</rating>

    <pris>49</pris>

    <img>img/sincity.jpg</img>

    <thumb>img/thumbs/sincity_b.jpg</thumb>

    <tekst>...</tekst>

  </movie>

  <movie rank="2">

    <title>Alien vs. Predator</title>

    <genre>Action/Sci-Fi</genre>

    <rating>15+</rating>

    <pris>49</pris>

    <img>img/avp.jpg</img>

    <thumb>img/thumbs/avp_b/jpg</thumb>

    <tekst>...</tekst>

  </movie>

---------------------------
---------------------------
---------------------------
På forhånd mange tak for hjælpen!
Avatar billede kragekjaer Praktikant
08. juni 2007 - 14:22 #1
prøv lige med function convertXML(loaded:Boolean) {
  trace(loaded);
Avatar billede kragekjaer Praktikant
08. juni 2007 - 14:23 #2
og du skal bruge xmlDok.firstChild.childNodes[i].childNodes[5].firstChild.nodeValue;

BEMÆRK: firstChild. før nodeValue
Avatar billede myztic Nybegynder
09. juni 2007 - 09:42 #3
Boolean gav "true".

Og det virker ikke med firstchild.
Avatar billede myztic Nybegynder
09. juni 2007 - 10:20 #4
Alrighty - firstChild hjalp lidt - jeg spadede en smule rundt.



Jeg har nu kigget rundt på lidt andre spørgsmål og tilføjet følgende funktion i toppen:



--------



xmldoku.onLoad = function(tok) {

    if (tok) trace(this);

}



--------



lige under xmldoku.onLoad = convertXML;



Desuden har jeg ændret en del navne på variabler/arrays etc. fordi jeg er den paranoide type der alt for ofte har oplevet at et navn der 'clasher' med koden skaber et utal af problemer, men det er checket igennem og mangler ingen steder.



Denne nye trace dog - giver mig et resultat der får mig til at tro at den kun loader det første <movie> (nu <film>) tag...

Nye Trace:



-------------------



<?xml version="1.0" encoding="iso-8859-1"?><topti><film rank="1"><ftitle>Sin City</ftitle><fgenre>Action/StoryTelling</fgenre><frating>18+</frating><fpris>49</fpris><fimg>fimg/sincity.jpg</fimg><fthumb>fimg/fthumbs/sincity_b.jpg</fthumb><ftekst>Fantastic film, violent and at the same time incredibly deep.<br>Sin City is known for its great artistic style and dark humor.</br></ftekst></film></topti>





-------------------



<topti> startes og sluttes efter det første filmtag.. og der er 10 af dem i XML-filen.

Hjælp!
Avatar billede myztic Nybegynder
09. juni 2007 - 10:37 #5
jeg har nu fået forbundet mit hovede efter at have slået det ind i væggen 207 gange... jeg fandt nemlig fejlen.
En fejl som ikke kan ses herinde fra...

i tekstfeltet (som indeholder en del tekst) havde jeg her bare copy/pastet '...' for at spare plads.
Men i selve filen stod der nogle <br> tags.... som den lukkede senere (automatisk) med et </br> tag... hvilket totalt destruerede det hele...

så nu er de ændret og alt virker.

Dog skal det siges at dit svar med firstChild hjalp mig... så hvis du smider et svar, får du point. og tak for tiden...

jeg skal ud og slå hovedet ind i muren lidt mere.
Avatar billede kragekjaer Praktikant
09. juni 2007 - 12:20 #6
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