【发布时间】:2011-02-24 17:34:45
【问题描述】:
我遇到了二维嵌套数组的问题,我想创建一个来自 XML 的数组。 我的 Xml('test.xml') 看起来像这样:
<content>
<item image="Mike.jpg" name="Mike" state = "New York">
<complex fid = "0"> ju675</complex>
<complex fid = "1"> kyu49</complex>
</item>
<item image="John.jpg" name="John" state = "New Jersey" >
<complex fid = "0"> mg749</complex>
<complex fid = "1"> ks749</complex>
<complex fid = "2"> ks678</complex>
</item>
<item image="Smith.jpg" name="Smith" state = "California">
<complex fid = "0"> we649</complex>
<complex fid = "1"> sd449</complex>
<complex fid = "2"> df459</complex>
<complex fid = "3"> hj569</complex>
</item>
</content>
这是我正在使用的 AS3 代码,我只想使用这种创建嵌套数组的方法,我很确定我做错了什么,但不确定在哪里。
var level:Array = [];
var complexes:Array = [];
loadXML();
function loadXML():void
{
var loader:URLLoader=new URLLoader();
loader.addEventListener(Event.COMPLETE,completeXMLHandler);
var request:URLRequest=new URLRequest('test.xml');
try
{
loader.load(request);
}
catch(error:Error)
{
trace('Impossible to load the document.');
}
}
function completeXMLHandler(event:Event):void
{
var loader:URLLoader=URLLoader(event.target);
var result:XML=new XML(loader.data);
var myXML:XMLDocument=new XMLDocument();
myXML.ignoreWhite=true;
myXML.parseXML(result.toXMLString());
for each (var usr in result.item)
{
level.push({name:usr.@name,state:usr.@state,complex:usr.item,state:usr.@image});
}
for ( var row:int = 0; row < level.length; row++ )
{
trace(level[row].name);
for ( var column:int = 0; column < level[row].length; column++ )
{
trace(level[row][column].complex);
}
}
}
【问题讨论】:
-
附带说明:确保您正确缩进代码(我修复了您的示例)。它使阅读更容易(因此更有可能得到答复),而且我很确定在某些圈子中,违反该规则是一种可吊打的罪行。
标签: xml arrays actionscript-3 nested