【问题标题】:AS3/Flash: XML to arrayAS3/Flash:XML 到数组
【发布时间】:2013-08-31 00:14:33
【问题描述】:

如何填充这样格式的数组?:

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"}...];

【问题讨论】:

标签: arrays actionscript-3 flash autocomplete components


【解决方案1】:
const xml:XML =
    <list>
        <label>ALPHA</label>
        <label>ALLAN</label>
        <label>ANTARES</label>
        <label>...</label>
    </list>;

const list:Array = new Array();

//xml..label.(trace(text()));
xml..label.(list.push({label:text()}));

// now we have an array:
// [{label:"ALPHA"}, {label:"ALLAN"}, {label:"ANTARES"}, {label:"..."}]

我建议阅读 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);

【讨论】:

  • 谢谢 A.K.为你的时间。我仍然对水平感到有些困惑。我确实更新了问题,使其更适合我的技能。
  • 非常非常感谢 A.K.!你很善良。我会阅读 AVM2 规范。
  • 谢谢。使用 Flash 15 年。
  • 你好 A.K.我确实将列表数组作为数据提供者进行了测试,它的工作原理就像一个魅力,但是我如何跟踪整个列表呢?我得到 [object Object],[object Object],...
  • 我的意思是,将整个生成的数组跟踪为字符串:[{label:"ALPHA"}, {label:"ALLAN"}, {label:"ANTARES"}, {label:"。 .."}]
猜你喜欢
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 2010-11-06
相关资源
最近更新 更多