indexOf для массива, заполненного xml - PullRequest
0 голосов
/ 22 июня 2011

У меня странная проблема.

При попытке сделать indexOf для "статического" массива, он работает, делая то же самое с массивом, заполненным xml, я всегда получаю результат = -1

Статический путь

var myarray:Array = new Array("Pub Pepsi","Shadow E-Bike","Icon Air Craft","Test","La page 4","La page 5","La page 6","La page 7");
var myresult:* = myarray.indexOf("Icon Air Craft");
trace(myresult);
// I get 2 as result so it works

Динамический путь (из xml)

var Monthpath:String = "juin";
var XMLpathUrl:String = "http://www.omagazine.fr/editions/2011/" + Monthpath + "/obook_content.xml.php";
var xml:XML;
var xmlLoader:URLLoader = new URLLoader();
var myarray:Array = new Array();

xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

function xmlLoaded(event:Event):void
{
    xmlLoader.removeEventListener(Event.COMPLETE, xmlLoaded);
    xmlLoader.removeEventListener(IOErrorEvent.IO_ERROR, xmlError);

    xml = new XML(event.target.data);

    for (var i in xml.pages.page)
    {
        myarray.push(xml.pages.page[i].@ga);
    }

    var myresult:* = myarray.indexOf("Icon Air Craft");
    trace(myresult);
    //-------------------------------------
    // I get -1 as result!!!! Why????
    //-------------------------------------
}

xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, xmlError);

function xmlError(event:IOError):void
{
    trace("Error");
}
xmlLoader.load(new URLRequest(XMLpathUrl));

1 Ответ

3 голосов
/ 22 июня 2011

Вы помещаете объект XML в свой массив, а не строку.Это должно работать, если вы используете .toString() для атрибута.

for (var i in xml.pages.page)
{
    myarray.push(xml.pages.page[i].@ga.toString());
}

var myresult:* = myarray.indexOf("Icon Air Craft");
trace(myresult);
...