AS3 XML в многомерный массив - PullRequest
1 голос
/ 16 июня 2011

Я искал повсюду, и хотя есть много объяснений, я не могу обернуться вокруг этого.

Вот моя структура xml:

 <question> 
            <q1> Who coined the term “Clinical Psychology”? </q1>       
            <answer> Lightner Witmer </answer>

            <option1> Stanley Hall </option1>
            <option2> Lightner Witmer </option2>
            <option3> Henry P. David </option3>
    </question>

Я могу просмотреть все в порядке и выбрать вопросы и ответы, а затем выбросить их в отдельные массивы.Проблема, с которой я сталкиваюсь, заключается в зацикливании и переносе параметров в многомерный массив, например такой:

var one:Array = new Array( 3 ); 
one[0] = ["Stanley Hall", "Lightner Witmer", "Henry P. David"];
one[1] = ["Stanley Hall", "Lightner Witmer", "Henry P. David"];
one[2] = ["Stanley Hall", "Lightner Witmer", "Henry P. David"];

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 17 июня 2011
    var answers:Array = [];

    for(var i = 0; i< xml.question.length; i++){
    var node:Array = [];
    node.push(xml.question[i].option1);
    node.push(xml.question[i].option2);
    node.push(xml.question[i].option3);

//or
    var node:Array = [xml.question[i].option1,xml.question[i].option2,xml.question[i].option3];

    answers.push(node);

    }

теперь можно получить ответы на вопросы:

answers[questionIndex][answerIndex];

Надеюсь, что поможет

1 голос
/ 17 июня 2011

Я не уверен, что вы настраиваете массив в той форме, которую хотите, но удаляете код, который вы разместили.Вы пробовали?

var one:Array = new Array( 3 ); 
one[0] = new Array( "Stanley Hall", "Lightner Witmer", "Henry P. David" );
one[1] = new Array( "Stanley Hall", "Lightner Witmer", "Henry P. David" );
one[2] = new Array( "Stanley Hall", "Lightner Witmer", "Henry P. David" );

С чем-то вроде этого я предпочел бы иметь массив вопросов с объектами в качестве элементов.Каждый объект будет содержать всю информацию об этом вопросе.Это позволило бы назначить пользовательский класс для каждого вопроса.Или можно использовать базовый динамический объект

var questions:Array = new Array();

var obj:Object = new Object();
obj.question = "Who coined the term 'Clinical Psychology'?"
obj.correctAnswer = "Lightner Witmer";
obj.possibleAnswers =new Array( "Stanley Hall", "Lightner Witmer", "Henry P. David" );

questions.push( obj );
...