Avatar billede barf Nybegynder
01. oktober 2004 - 20:58 Der er 6 kommentarer og
1 løsning

problem med xml i class

Jeg har lige kastet mig ud i at lærer classes, så bær over med mig :)

Jeg er ved at lave en simpel class der loader en xml fil og opbygger en menu ud fra den.

Jeg kan godt loade xml'en, men når jeg prøver at tilgå dataen får jeg denne fejl:
There is no property with the name 'firstChild'

Her er den del af koden som genererer fejlen:
private function loadXML () : Void
{
    lv.load (PATH + FILE)
    lv.onLoad = doneLoading
}
private function doneLoading (success : Boolean) : Void
{
    if (success)
    {
        antal = this.firstChild.childNodes.length;
    } else
    {
        trace ("error loading")
    }
}
Avatar billede mpless Nybegynder
01. oktober 2004 - 21:04 #1
Prøv lige at poste de første 10 linier af xml filen ....
Avatar billede barf Nybegynder
01. oktober 2004 - 21:33 #2
ok

<?xml version="1.0" encoding="UTF-8"?>
<menu>
    <main navn="Home" />
    <main navn="Products">
        <sub navn="1" />
        <sub navn="2" />
        <sub navn="3" />
        <sub navn="4" />
        <sub navn="5" />
    </main>
    <main navn="Dealers" />
    <main navn="Contact" />
</menu>
Avatar billede barklund Nybegynder
02. oktober 2004 - 18:06 #3
Det handler ikke om xml'en men om scope. Man er nødt til at bruge en anonym callback:

var xml:XML;
private function loadXML () : Void {
    lv.load (PATH + FILE);
    var base:SomeClass = this,
    lv.onLoad = function(s) {
        base.xml = this;
        base.doneLoading(s);
    }
}
private function doneLoading (success : Boolean) : Void {
    if (success) {
        trace(this.xml.firstChild.childNodes.length);
    } else {
        trace ("error loading")
    }
}
Avatar billede barf Nybegynder
03. oktober 2004 - 22:28 #4
Hej igen Barklund :)

Dit forslag gav lidt fremgang, men nu tracer den undefined istedet.
Avatar billede barklund Nybegynder
04. oktober 2004 - 01:25 #5
Hm, det burde nu være korrekt nok. Prøv at sende xml'en med som parameter:

private function loadXML () : Void {
    lv.load (PATH + FILE);
    var base:SomeClass = this,
    lv.onLoad = function(s) {
        base.doneLoading(s, this);
    }
}
private function doneLoading (success : Boolean, result: XML) : Void {
    if (success) {
        trace(result.firstChild);
    } else {
        trace ("error loading")
    }
}
Avatar billede barf Nybegynder
04. oktober 2004 - 09:36 #6
Stadig undefined, men det er der vist heller ikke noget at sige til, når jeg prøver at loade min xml fil med LoadVars :(

Det var vist en af de mere pinlige :)
Avatar billede barklund Nybegynder
04. oktober 2004 - 12:06 #7
Tja, jeg undrede mig også lidt og lv-efternavnet, men man må jo kalde sine variabler hvad man vil :)

Tark for points, vælg selv hvilken af mine to løsninger, du synes bedst om. Jeg er nok mest til den første hvis xml'en skal bruges flere steder i klassen, ellers den sidste.
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