I’m having problems with an XML onload function. The trace statement in my flash movie returns undefined and the one in my class file also returns undefined.
if I use trace(xnAnimal) inside the dataprovider function in the class file it returns the entire xml file.
I have used a similar code in another movie and it worked as it should but for some reason this isn’t working. Could someone help me out with this one.
here is the code I have in my flash movie.
var xmlAnimal:XML;
var animalStock:AnimalXML;
initializeAnimalXML("animalstock.xml");
        
        
function initializeAnimalXML(sFile:String):Void
{
    xmlAnimal = new XML();
    xmlAnimal.ignoreWhite = true;
    xmlAnimal.onLoad = function(bSuccess):Void
    {
        //var xnTreasureType:XMLNode;
        animalStock = new AnimalXML();
        animalStock.dataProvider=this.firstChild;
        trace(animalStock.Name); returns null
    }
    xmlAnimal.load(sFile);
}
My class code
class AnimalXML
{
    private var _sName:String;
    private var _nPS:Number;
    private var _nDX:Number;
    private var _nCN:Number;
    private var _sSpeed:String;
    private var _nACBonus:Number;
    private var _sBonusMuts:String;
    private var _sDescription:String;
    public function get Name():String{    return _sName;    }
    public function get PS():Number{ return _nPS;    }
    public function get DX():Number{ return _nDX;    }
    public function get CN():Number{ return _nCN;    }
    public function get Speed():String{ return _sSpeed; }
    public function get ACBonus():Number{    return _nACBonus; }
    public function get BonusMuts():String{ return _sBonusMuts; }
    public function get Description():String{ return _sDescription; }
    public function set dataProvider(xnAnimal:XMLNode):Void{
        _sName = xnAnimal.attributes.name;
        trace("XML Node: "+xnAnimal.attributes.name);
        _nPS = xnAnimal.attributes.ps;
        _nDX = xnAnimal.attributes.dx;
        _nCN = xnAnimal.attributes.cn;
        _sSpeed = xnAnimal.attributes.speed;
        _nACBonus = xnAnimal.attributes.acbonus;
        _sBonusMuts = xnAnimal.attributes.mutationbonus;
        _sDescription = xnAnimal.firstChild.nodeValue;
    }
    function AnimalXML(sName:String,nPS:Number,nDX:Number,nCN:Number,sSpeed:String,nACBonus:Number,sBonusMuts:String,sDescription:String){
        _sName = sName;
        _nPS = nPS;
        _nDX = nDX;
        _nCN = nCN;
        _sSpeed = sSpeed;
        _nACBonus = nACBonus;
        _sBonusMuts = sBonusMuts;
        _sDescription = sDescription;
    }
    public function toString():String{
        var sOutput:String = _sName +newline+_nPS+newline+_nDX+newline+_nCN+newline+_sSpeed+newline+_nACBonus+newline+_sBonusMuts+newline+_sDescription+newline;
        return sOutput
    }
}
xml file structure. I’m only showing one Animal Node but the files will actually have about 30 to 40 animal nodes.
<animalstock>
    <Animal> 
        <name>Alligator</name>
        <ps>15</ps>
        <dx>3</dx>
        <cn>12</cn>
        <speed>base 15,bipedal 10,Water 8</speed>
        <acbonus>13</acbonus>
        <mutations><mutationbonus/>
        <description><description/>
    </Animal>
<animalstock