2011-06-16 87 views
1

我到处寻找,虽然有很多解释,但我似乎无法将其包围。AS3 XML到多维数组

这里是我的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
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]; 

希望帮助

+0

这正是我正在寻找的。非常感谢! – Dan 2011-06-16 20:36:02

1

我不确定你是否以你想要的形式设置了数组,但是关闭了你发布的代码。
你试过了吗?

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); 
+0

这种方式似乎更有意义。如果我今晚有时间,我会试试看。谢谢! – Dan 2011-06-16 20:35:39

+0

是的,它多一点编码,但更容易阅读。不像我的写作技巧。 – 2011-06-16 20:40:42