如何使用Flash AS3中的XML对象中的特定元素创建DataProvider

时间:2010-09-30 22:25:13

标签: xml flash actionscript-3 dataprovider

我有这个XML(Flash / AS3):

 <channel>
 <title>...</title>
 <description>...</description>
 <item><summary>...</summary><detail>...</detail></item>
 <item><summary>...</summary><detail>...</detail></item>
 ...
 </channel>

我想创建一个包含元素的DataProvider(用于数据网格)。

我认为这样可行:

var items:XML = new XML(evt.target.data); //url loader event listener 'complete'
trace(items..item is XMLList); // true
myDP = new DataProvider(items..item);

但是我收到了这个错误:

 TypeError: Error: Type Coercion failed: cannot convert 
   <item><summary>...</summary><detail>...</detail></item>
   <item><summary>...</summary><detail>...</detail></item>
     ...
 to Array or DataProvider.
    at fl.data::DataProvider/getDataFromObject()
    at fl.data::DataProvider()

我做错了什么?

2 个答案:

答案 0 :(得分:0)

您无需创建DataProvider实例。您应该能够使用XML实例直接分配dataProvider属性。 dataProvider setter将自动确定对象类型并对其进行适当处理。

答案 1 :(得分:0)

您必须为DataProvider提供XML,而不是XMLList:

var items:XML = <channel>
   <title>Title</title>
   <description>Description</description>
   <item><summary>Summary 1</summary><detail>Detail 1</detail></item>
   <item><summary>Summary 2</summary><detail>Detail 2</detail></item>
</channel>;

var xml:XML = <dummy/>;
xml.appendChild(items..item);
list.dataProvider = new DataProvider(xml);
list.labelFunction = function(item:Object) {
   return item.summary;
}