Need help with XML onload

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