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@
> >
>