简体   繁体   English

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

[英]How to create a DataProvider using specific elements from an XML object in Flash AS3

I have this XML (Flash/AS3): 我有这个XML(Flash / AS3):

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

I want to create a DataProvider containing the elements (for use in a datagrid). 我想创建一个包含元素的DataProvider(供在datagrid中使用)。

I thought this would work: 我认为这可以工作:

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

But I get this error: 但是我得到这个错误:

 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()

What am I doing wrong? 我究竟做错了什么?

You don't need to create an instance of DataProvider. 您无需创建DataProvider的实例。 You should be able to directly assign the dataProvider property with the XML instance. 您应该能够直接为XML实例分配dataProvider属性。 The dataProvider setter will automatically determine the object type and handle it appropriately. dataProvider设置器将自动确定对象类型并进行适当处理。

You have to give the DataProvider an XML, not an XMLList: 您必须给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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM