Parsing XML with ActionScript 3.0 -
i have xml goes this:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <root xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <row> <columna>2013-08-07</columna> <columnb>pizza</columnb> </row> <row> <columna>2013-04-07</columna> <columnb>burger</columnb> </row> <row> <columna>2013-04-07</columna> <columnb>pizza</columnb> </row>
the xml goes on hundreds of rows. trying achieve this. "output: pizza: 2 occurances on 2013-08-07 & 2013-04-07." far i've tried:
//variables var myxml:xml; var xmlloader:urlloader = new urlloader(); //check xml loaded xmlloader.load(new urlrequest ("myxml.xml")); xmlloader.addeventlistener(event.complete, processxml); function processxml(e:event):void { myxml = new xml(e.target.data); //create xmllist column data var items:xmllist = myxml.row.columna.text() //create xmllist rows var rows:xmllist = myxml.row //create xmllist column b data (dates) var dates:xmllist = myxml.row.columnb.text() //create empty object fill in occurances of column var columna:string; var map:object = {}; each (columna in items) { if(!map[columna]) map[columna] = 1; else map[columna]++; } ( columna in map ) { trace(columna, "=", map[columna], "times. on dates "); } }
my newbie attempt @ trying see if can relate column b column a
var columnb:string; ( var i:uint=0; i<rows.length(); i++ ) { if ( columna[i] == myxml.row.columna[i] ) { trace( columna[i], "=", columnb[i] ) } }
it's puzzling me. in output panel get...
pizza 2 times. on dates burger 1 times. on dates etc.
is there way include dates in trace output? like:
pizza 2 times. on dates 2013-08-07, 2013-04-07
i wouldn't extract xml before parsing it:
var map:object = {}; var meal:string; //loop through each row each (var node:xml in myxml.row) { meal = node.columnb.text(); //if meal not exist key in our map yet, create , put empty array in if (!map[meal]) map[meal] = []; //fill array of dates current date map[meal].push(node.columna.text()); }
there object filled that:
{pizza: ["2013-08-07", "2013-04-07"], burger: ["2013-04-07"]}
you have go through it:
for (var meal:string in map) { trace(meal, "found", map[meal].length, "times on", map[meal]); }
Comments
Post a Comment