2013-08-28 79 views
0

我如何可以填充格式化像這樣的陣列?:AS3 /閃光:XML數組

var names:Array = [{label:"JAMES"}, {label:"JANE"}, {label:"JAMEL"}...]; 

從XML像這樣的?:

<a> 
    <ap> 
    <name>JAMES</name> 
    <age>36</age> 
    </ap> 
</a> 

這是自動完成的組件。

更新,開始更適合我的技能。這:

<list> 
    <label>ALPHA</label> 
    <label>ALLAN</label> 
    <label>ANTARES</label> 
    <label>...</label> 
</list> 

這樣:

var list:Array = [{label:"ALPHA"}, {label:"ALLAN"}, {label:"ANTARES"}...]; 
+0

http://krasimirtsonev.com/blog/article/as3-action-script-convert-xml-to-json-xml2json – Neil

+0

使用本地XML.toJSON()方法。但爲了什麼? http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/JSON.html –

+0

krasimirtsonev.com/blog/article/ < - 調用一個可能未定義的方法解析。 – Sergio

回答

2

我推薦閱讀AVM2規範,並特別注意名稱空間。認真。這很有趣,很有趣!


嗯...替代枯燥的方式:

const list:Array = new Array(); 
const xml:XML = 
    <list> 
     <label>ALPHA</label> 
     <label>ALLAN</label> 
     <label>ANTARES</label> 
     <label>...</label> 
    </list>; 

const labels:XMLList = xml..label; 
for each(var node:XML in labels) 
{ 
    trace(node); 
    var arrayItem:Object = new Object(); 
    arrayItem.label = node.text(); // or node.toString() or .toJSON() or .to... 
    arrayItem.name = node.name(); 

    // added only for debug-trace: 
    arrayItem.toString = function():String 
    { 
     var result:String = '{', delimiter:String = ''; 
     for(var key:String in this) 
      if(key !== 'toString') 
       result += delimiter + key + ':"' + this[key] + '"', 
        delimiter ||= ', '; 
     return result + '}'; 
    } 

    // add item to list: 
    list.push(arrayItem); 
} 

trace(list); 
+0

謝謝A.K.爲你的時間。我仍然有點困惑與水平。我確實更新了這個問題,使它更適合我的技能。 – Sergio

+0

好的,我會爲你更新答案。 –

+0

很多很多謝謝A.K.!你很親切。我會閱讀AVM2規範。 – Sergio