Search code examples
xmlflashactionscript-3dataprovider

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


I have this 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).

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?


Solution

  • You have to give the DataProvider an XML, not an 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;
    }