Avatar billede sun Nybegynder
30. august 2004 - 10:27 Der er 6 kommentarer og
1 løsning

xml, gemmer kode i obj

Jeg må havde en lille fejl i denne kode som gøre jeg får undefined når jeg prøver at finde det jeg har skrevet ind i et obj, men hvor er fejlen?
Jeg har skrevet trace sidste output ind efter dem så kan det være i kan se det fra denne kode..
----------------------------------------------------------------
var external_xml:XML = new XML();
external_xml.ignoreWhite = true;
external_xml.load("test.xml");
external_xml.onLoad = function(success:Boolean) {
    if (success) {
        trace("xml loaded successfully.");// trace = xml loaded successfully.
        var arr = external_xml.childNodes;
        //trace(arr);
        _root.obj = new Object();
        for (var j = 0; j<arr.length; ++j) {
            var temparr = arr[j].childNodes;
            for (var k = 0; k<temparr.length; ++k) {
                _root.obj[arr[j].nodeName.toString().toLowerCase()][temparr[k].attributes.name.toString().toLowerCase()] = unescape(temparr[k].firstChild.nodeValue);
                trace(""+_root.obj[arr[j].nodeName.toString().toLowerCase()][temparr[k].attributes.name.toString().toLowerCase()]) //trace = undefined
                trace(arr[j].nodeName.toString().toLowerCase());// trace = page1
                trace(temparr[k].attributes.name.toString().toLowerCase());//trace = text1
                trace(temparr[k].firstChild.nodeValue);//trace = Hejsa der
            }
        }
    } else {
        trace("xml failed to load.");
    }
    temparr = "";
    arr = ""
    trace("ER der noget her?"+_root.obj.page1.text1);//trace = ER der noget her?undefined
};
stop();

//SUN
Avatar billede barklund Nybegynder
30. august 2004 - 12:00 #1
Det er verdens mest uoverskuelige kode, men jeg gætter på, at du mangler at lave _root.obj.page1 til et objekt:

var external_xml:XML = new XML();
external_xml.ignoreWhite = true;
external_xml.load("test.xml");
external_xml.onLoad = function(success:Boolean) {
    if (success) {
        trace("xml loaded successfully.");// trace = xml loaded successfully.
        var arr = external_xml.childNodes;
        //trace(arr);
        _root.obj = new Object();
        for (var j = 0; j<arr.length; ++j) {
            var temparr = arr[j].childNodes;
_root.obj[arr[j].nodeName.toString().toLowerCase()] = new Object();
            for (var k = 0; k<temparr.length; ++k) {
                _root.obj[arr[j].nodeName.toString().toLowerCase()][temparr[k].attributes.name.toString().toLowerCase()] = unescape(temparr[k].firstChild.nodeValue);
                trace(""+_root.obj[arr[j].nodeName.toString().toLowerCase()][temparr[k].attributes.name.toString().toLowerCase()]) //trace = undefined
                trace(arr[j].nodeName.toString().toLowerCase());// trace = page1
                trace(temparr[k].attributes.name.toString().toLowerCase());//trace = text1
                trace(temparr[k].firstChild.nodeValue);//trace = Hejsa der
            }
        }
    } else {
        trace("xml failed to load.");
    }
    temparr = "";
    arr = ""
    trace("ER der noget her?"+_root.obj.page1.text1);//trace = ER der noget her?undefined
};
stop();
Avatar billede sun Nybegynder
30. august 2004 - 12:19 #2
"Det er verdens mest uoverskuelige kode" vildt kan jeg få en pris for det? :-P nej den er ikke helt let at uoverskue men nok med det du har ret, jeg har glemt at lave object til mine page punkt, det var super som altid barklund :o) smid et svar!!
Avatar billede barklund Nybegynder
30. august 2004 - 12:20 #3
Du kan forsøge at indstille det til en pris ;)
Avatar billede sun Nybegynder
30. august 2004 - 12:32 #4
hehe, måske men jeg må nok heller rette den lidt op...
Avatar billede barklund Nybegynder
30. august 2004 - 12:41 #5
Tark for points.

Jeg kan se, at du lægger op til at have med end en root node i din xml - altså som:

<page1>...</page1><page2>...</page2>

Det er ikke tilladt. Du skal pakke det ind i en enkelt root node:

<pages><page1>...</page1><page2>...</page2></pages>

Så skal du også bare ændre:

var arr = external_xml.childNodes;

Til

var arr = this.firstChild.childNodes;

Og det vil virke ;)
Avatar billede sun Nybegynder
30. august 2004 - 12:45 #6
tak ;-) godt set.... det
Avatar billede barklund Nybegynder
30. august 2004 - 13:35 #7
Så lidt - det er jo derfor, jeg er til :P
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