as3如何使用XML中的数据正确填充对象

时间:2014-10-14 19:27:20

标签: xml actionscript-3

我想用xml数据填充一个对象。 听起来很简单,但问题是,对象不会嵌套一次而是嵌套两次。 XML文件如下所示:

<antwoordenlijst>
        <antwoorden id="1">
            <antwoord keuze="a" value="0" volgnr="1">Ja, alles beter dan dat honden weer in Nederland</antwoord>
            <antwoord keuze="b" value="0" volgnr="1">Gaat wel</antwoord>
            <antwoord keuze="c" value="0" volgnr="1">Nee, ik heb toch liever het weer in Nederland</antwoord>
        </antwoorden>
        <antwoorden id="2">
            <antwoord keuze="a" value="10" volgnr="2">Volgens mij maakt de kleur voor jouw niet veel uit, alles staat je goed</antwoord>
            <antwoord keuze="b" value="0" volgnr="2">Ik geef je vrouw gelijk</antwoord>
            <antwoord keuze="c" value="-30" volgnr="2">Het staat je allebei niet.</antwoord>
        </antwoorden>

等...

我试过的是:

private function antwoordenGeladen(e:Event):void
    {
        var antwoordenOverzichtIndex = 0;
        deXmlData = new XML(deLader.data);
        for (var i:Number=0; i<26; i++) 
        {
            var xmlAntwoorden:XMLList = deXmlData.antwoordenlijst;
            var antw:Object = new Object();
            for (var s:Number=0; s<3; s++)
            {
                antw["Keuze"] = xmlAntwoorden.child(i).child(s).@keuze;
                antw["Value"] = xmlAntwoorden.child(i).child(s).@value;
                antw["Volgnr"] = xmlAntwoorden.child(i).child(s).@volgnr;
                antw["Vraag"] = xmlAntwoorden.child(i).child(s);
                antw["Id"] = xmlAntwoorden.child(i).@id;
                antwoordenLijst[antwoordenOverzichtIndex] = antw;
                antwoordenOverzichtIndex++;
            }
            antwoordenOverzicht[i] = antwoordenLijst;

        }

    }

但由于某种原因,它会覆盖antwoordenOverzicht [i]

的值

如果我检查调试器,变量i每次出现时都会上升,所以我很困惑。

如果有人看到更好的方法,或者只是知道答案我会很感激。

1 个答案:

答案 0 :(得分:0)

我认为你可以做一些你想要做的更简洁的事情(未经测试):

private function antwoordenGeladen(e:Event):void
{
    deXmlData = new XML(deLader.data);

    for (var i:Number=0; i<26; i++) 
    {
        var xmlAntwoorden:XMLList = deXmlData.antwoordenlijst;
        var antwoordenLijst = [];

        for (var s:Number=0; s<3; s++)
        {
            antwoordenLijst.push({
                keuze: xmlAntwoorden.child(i).child(s).@keuze,
                value: xmlAntwoorden.child(i).child(s).@value,
                volgnr: xmlAntwoorden.child(i).child(s).@volgnr,
                vraag: xmlAntwoorden.child(i).child(s),
                id: xmlAntwoorden.child(i).@id
            });
        }
        antwoordenOverzicht.push(antwoordenLijst);
    }
}