我有一个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并将它们添加到数组或者有人编辑,所以它作品?
答案 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