That's right, because when you trace the ArrayCollection it converts its
children to String, and your nodes have no inner text, so they toString() as
"".
Instead of "addItem(item)", try "addItem([EMAIL PROTECTED])"
-Josh
On Fri, Jul 11, 2008 at 6:57 AM, sdl1326 <[EMAIL PROTECTED]> wrote:
> 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<flexcoders%2540yahoogroups.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@
> > >
> >
>
>
>
> ------------------------------------
>
> --
> Flexcoders Mailing List
> FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> Search Archives:
> http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups
> Links
>
>
>
>
--
"Therefore, send not to know For whom the bell tolls. It tolls for thee."
:: Josh 'G-Funk' McDonald
:: 0437 221 380 :: [EMAIL PROTECTED]