Actionscript 2:将xml文件中的所有条目添加到数组中

时间:2012-11-18 18:17:46

标签: xml arrays while-loop actionscript-2

我有一个xml文件,其中有3075个条目看起来像这样

<item id="1" itype="COLOUR"></item>

我正在使用动作脚本2来加载xml,然后使用此代码将while数据输入到数组中。

my_xml = new XML();
paper_crumbs = Array();
my_xml.load("sample.xml");
my_xml.onLoad = my_function;
my_xml.ignoreWhite = 1;

function my_function() {
var b = true;
var num = "1";
while(b == true){
paper_crumbs[my_xml.firstChild.childNodes[num].attributes.id] = {type: my_xml.firstChild.childNodes[num].attributes.itype, cost: 0, is_member: false}; 
if(my_xml.firstChild.childNodes[num].attributes.final == "yes"){
b = false;
trace("done");
}
num = num + 1;
}
}

我遇到的问题是它使flash无响应然后询问我是否要终止脚本,是否有任何其他方式我可以循环通过xml并将它们添加到数组或者有人编辑,所以它作品?

1 个答案:

答案 0 :(得分:1)

您的代码的某些语法不正确,我更新了您的XML格式,以便更轻松地处理并将其放入更简单的格式,以便稍后进行调整。我已经创建了一个下面显示的示例,其代码可以正确循环遍历sample.xml文件中的每个条目。

<强> sample.xml中:

<items>
    <item id="1" itype="COLOUR"></item>
    <item id="2" itype="COLOUR"></item>
    <item id="3" itype="COLOUR"></item>
    <item id="4" itype="COLOUR"></item>
    <item id="5" itype="COLOUR"></item>
    <item id="6" itype="COLOUR"></item>
    <item id="7" itype="COLOUR"></item>
    <item id="8" itype="COLOUR"></item>
    <item id="9" itype="COLOUR"></item>
    <item id="10" itype="COLOUR"></item>
    <item id="11" itype="COLOUR"></item>
    <item id="12" itype="COLOUR"></item>
    <item id="13" itype="COLOUR"></item>
    <item id="14" itype="COLOUR"></item>
    <item id="15" itype="COLOUR"></item>
    <item id="16" itype="COLOUR"></item>
    <item id="17" itype="COLOUR"></item>
    <item id="18" itype="COLOUR"></item>
    <item id="19" itype="COLOUR"></item>
    <item id="20" itype="COLOUR"></item>
</items>

<强>的ActionScript:

my_xml = new XML();
paper_crumbs = Array();
my_xml.load("sample.xml");
my_xml.onLoad = my_function;
my_xml.ignoreWhite = true;

function my_function() {

    var rootNode:XMLNode = my_xml.firstChild;   // <items> node
    var itemNode:XMLNode = rootNode.firstChild; // get first child from <items>
    var xmlNodeID:Number;
    var xmlNodeType:String;

    while(itemNode != null){

        xmlNodeID = itemNode.attributes.id;
        xmlNodeType = itemNode.attributes.itype;

        paper_crumbs.push( {id: xmlNodeType, type: xmlNodeType, cost: 0, is_member: false} );

        itemNode = itemNode.nextSibling;

    } // end while

} // end function