This works partiallly but it keeps all the XML Node names?? AND WHEN USED WITH A DATAGRID SEARCH iT BLOW UP IN FLEX
so help would still be nice
myData = new ArrayCollection(mx.utils.ArrayUtil.toArray(xmlStudents));
I found it on:
http://www.flexdeveloper.eu/forums/actionscript-3-0/converting-xml-to- arraycollection/
I ultimately needed it for this code examples:
HOW TO SEARCH A DATAGRID?
http://www.flex-blog.com/arraycollection-filter-example/
Thanks.
Doug Lubey of Louisiana
SEARCH ENGINE REFERENCE:
flex4 datagrid search filter 2010
flex4 datagrid search filter columns
flex4 datagrid example with search filters
adobe flex4 convert fx:XMLList to arraylist
flex4 convert XMLList to arraylist
flashbuilder4 convert xml to arraylist
flex xml to arraylist
convert xmllist to arraycollection in flex
Implicit coercion of a value of type XMLList to an unrelated type mx.collections:ArrayList
Hi,
Here is the code which converts XMLList to an arraycollection...
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init();" layout="absolute">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.xml.SimpleXMLDecoder;
private var acAllNodes:ArrayCollection;
private var acOpenNodes:ArrayCollection;
private function init():void
{
convertXmlListToArrayCollection();
}
private function convertXmlListToArrayCollection():void
{
var strXML:String = dpNodes.toXMLString();
strXML = "<root>" + strXML + "</root>";
var xml:XML = new XML(strXML);
var xmlDoc:XMLDocument = new XMLDocument(xml);
var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);
var resultObj:Object = decoder.decodeXML(xmlDoc);
acAllNodes = new ArrayCollection();
if(resultObj.root.hasOwnProperty("items"))
{
if(resultObj.root.items is ArrayCollection)
{
acAllNodes = resultObj.root.items;
}
else if(resultObj.root.items is Object)
{
acAllNodes.addItem(resultObj.root.items);
}
}
}
]]>
</mx:Script>
<mx:XMLListCollection id="dpNodes">
<mx:source>
<mx:XMLList>
<items name="total">
<item name="value1" percentage="35"/>
<item name="value2" percentage="25"/>
<item name="value3" percentage="47"/>
<item name="value4" percentage="89"/>
</items>
<items name="somesub">
<item name="value1" percentage="15"/>
<item name="value2" percentage="27"/>
<item name="value3" percentage="56"/>
<item name="value4" percentage="43"/>
</items>
</mx:XMLList>
</mx:source>
</mx:XMLListCollection>
</mx:Application>
If this post answers your question or helps, please kindly mark it as such.
Thanks,
Bhasker Chari
Bhasker,
YES your solution worked...thanks.
It does appear to be customized for each Xml document which uses different node names. Took me 5 minutes to figure out your XML Set started with "items" where as mine started with "student"...thanks.
other than it worked perfectly:
var strXML:String = xmlStudents.toXMLString(); strXML =
"<root>" + strXML + "</root>";
//Alert.show(strXML, 'Alert Box', mx.controls.Alert.OK);
var xml:XML = new XML(strXML);
var xmlDoc:XMLDocument = new XMLDocument(xml);
var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);
var resultObj:Object = decoder.decodeXML(xmlDoc); myData =
new ArrayCollection();
if(resultObj.root.hasOwnProperty("student")) {
if(resultObj.root.student is ArrayCollection) { myData = resultObj.root.student; }
else if(resultObj.root.student is Object) { myData.addItem(resultObj.root.student); } } HERE IS MY fx:XMLLIST I based <fx:XMLList id="xmlStudents"> <student> <id>1</id> <name>Christina Coenraets</name> <phone>555-219-2270</phone> <email>ccoenraets@fictitious.com</email> <active>true</active> <image>images/arrow_icon_sm1.png</image> </student> </fx:XMLList>
North America
Europe, Middle East and Africa
Asia Pacific