Tracy, thanks for the very detailed reply. I changed the resultFormat=
'e4x'. So, I want to put the xml data into an arraycollection and am
trying the following code:

                var xmlResult:XML = new XML(event.result);
                
                xmlImages_ac = new ArrayCollection();

                // push XML to ArrayCollection
                for each(var item:XML in xmlResult.image){
           
                  xmlImages_ac.addItem(item);
                }

                trace('xmlImages_ac - ' + xmlImages_ac)

For whatever reason, I can not seem to get this to work as it simply
traces out:

      xmlImages_ac - ,,,,

Can you point to where I am getting tripped up?

Thanks for the assistance.

--- In [email protected], "Tracy Spratt" <[EMAIL PROTECTED]> wrote:
>
> You have found one reason not to use resultFormat="object".  That result
> format causes flex to convert your result data, which is xml, into a
> tree of dynamic objects.  You have no control over this process(, and it
> has some issues, particularly that  values that look like numbers are
> converted to numbers) and it is even hard to predict.  It is also hard
> to debug, though you can use ObjUtil.toString() to see the contents.  
> 
>  
> 
> What is happening in your case is the "images" node becomes an object
> containing an Array or "image" nodes.  So this expression:
> 
> result.images.image returns an Array, which you can directly wrap in an
> ArrayCollection.  I would not expect the direct assignment to work like
> you show it, and doing it that way hides what is really happening.  This
> is more clear:
> 
> var aResult:Array = ResultEvent( data ).result.images.image;
> 
> trace(aResult.length); //is this what you expect
> 
> var acImages:ArrayCollection = new ArrayCollection(aResult);
> 
>  
> 
> Since an Array is an object, Josh's suggestion to use a for..in loop
> would work also.
> 
>  
> 
> I advise using resultFormat="e4x".  This leaves your result data as XML,
> so you can do:
> 
> var xmlResult:XML = XML(ResultEvent( data ).result);
> 
> trace(xmlResult.toXMLSTring());  //you will see your xml, unchanged.
> 
>  
> 
> Now, you can use the xml directly, or use XMLList, or XMLListCollection,
> or combinations of the three.
> 
>  
> 
> Or, if you want, you can convert your xml, or parts thereof, into
> ArrayCollections.
> 
>  
> 
> Tracy
> 
>  
> 
> ________________________________
> 
> From: [email protected] [mailto:[EMAIL PROTECTED] On
> Behalf Of sdl1326
> Sent: Thursday, July 10, 2008 12:16 PM
> To: [email protected]
> Subject: [flexcoders] Re: Putting returned xml data into ArrayCollection
> using Cairngorm framwork (Command Class/Delegate Class/IResponder)
> 
>  
> 
> Here's a sample xml that's getting loaded in via http service:
> 
> <images duration="3000" effect="Fade" startDelay="2000">
> <image name="image.jpg" url="http://www.cnn.com <http://www.cnn.com> "/>
> <image name="image1.jpg" url="http://www.usatoday.com
> <http://www.usatoday.com> " />
> <image name="image2.jpg" url="http://www.msnbc.com
> <http://www.msnbc.com> " />
> <image name="image3.jpg" url="http://www.digg.com <http://www.digg.com>
> " />
> <image name="image4.jpg" url="http://www.google.com
> <http://www.google.com> " />
> </images>
> 
> If I change the code in the result handler to:
> 
> var ac:ArrayCollection = ResultEvent( data ).result.images.image
> 
> Then I have no issues putting it directly into an array collection.
> It's only when I remove the (.image) and have the following:
> 
> var ac:ArrayCollection = ResultEvent( data ).result.images
> 
> Is when I get the coercion error. Is there any reason why I shouldn't
> continue to put the data in an array collection via the 1st method?
> 
> TIA
> 
> --- In [email protected] <mailto:flexcoders%40yahoogroups.com>
> , "Josh McDonald" <dznuts@> wrote:
> >
> > You're getting an ObjectProxy because you're using the "object" result
> > format. To convert to ArrayCollection:
> > 
> > var myArray:Array = [];
> > for each (var img:* in result.images)
> > {
> > myArray.pish(img);
> > }
> > 
> > myCollection = new ArrayCollection(myArray);
> > 
> > -Josh
> > 
> > On Thu, Jul 10, 2008 at 1:31 PM, sdl1326 <azsl1326-email@> wrote:
> > 
> > > Thanks for the assistance.
> > >
> > > I have left the resultformat blank (feel free to share why I
> shouldn't
> > > do this as I am always looking for best practices/advice).
> However,in
> > > previous projects, I have taken the return data from an http service
> > > and immediately put it in an arraycollection in the resulthandler. I
> > > just assumed the same could be done here when using Cairngorm, but
> > > apparently something isn't correct. I tried your suggestion below
> and
> > > am still receiving an error:
> > >
> > > TypeError: Error #1034: Type Coercion failed: cannot convert
> > > mx.utils::[EMAIL PROTECTED] to Array.
> > >
> > > Thanks in advance.
> > >
> > >
> > >
> > 
> > -- 
> > "Therefore, send not to know For whom the bell tolls. It tolls for
> thee."
> > 
> > :: Josh 'G-Funk' McDonald
> > :: 0437 221 380 :: josh@
> >
>


Reply via email to