То, что у вас есть, - это не XML, а XMLList, и это вполне приемлемо.
Вам не нужно проходить циклы.Вы можете получить еще один XMLList, как это.XMLList похож на массив XML, но в этом случае у вас будут не полностью сформированные узлы, а только содержимое всех атрибутов.
Это будет выглядеть примерно так:
var questionTxt:XMLList = yourQuestions.@txt;//yourQuestions contains your originalXMLList as shown above
Теперь вы можете получить доступ к каждому текстовому элементу как:
var stem:String = String(questionTxt[0]);
Если по какой-то причине у вас абсолютно должен массив, вы можете сделать это:
var questions:Array = new Array();
for (var i:int = 0; i< questionTxt.length(); i++) {
questions[i] = questionTxt[i];
}
Однако, это похоже на большую работу даром, так как вы можете просто использовать XMLList как есть, получая к нему доступ через e4x.Какова ваша полная цель?
Я просто более внимательно посмотрел на ваш вопрос, и все, что вам действительно нужно сделать, это:
protected var questions:XMLList;
public function processXML(e:Event):void {
myXML = XML(e.target.data);
questions = myXML.question;
// get number of questions
trace(myXML.question.length());
}
public function getQuestionAt( index:Number ):String {
if (questions[index] == undefined) {
throw new Error("Wrong index for question!!!");
}
return questions[index].attribute('txt');
}
public function get numberOfQuestions():int {
return myXML.question.length();
}