javascript - How to iterate data output from DataSchema XML -
yui().use("datatype-xml", "dataschema-xml", function(y) { var datain = y.datatype.xml.parse(xmldata); schema = { resultlistlocator: "song", resultfields: [{key:"title"}, {key:"artist"}, {key:"rank"}] }, dataout = y.dataschema.xml.apply(schema, datain); console.log(dataout); <-- display list of object console.log(dataout.length); <--- undefined });
everything seems correct when log dataout (a list of object). when try loop through list, length undefined.
so how can iterate through list after applying dataschema.xml ?
dataschema's apply
method returns object results
, meta
properties. results
property array can iterate over. here's example:
yui().use("datatype-xml", "dataschema-xml", function(y) { var data_in = y.datatype.xml.parse('<response><session>542235629</session><tracks start="1" count="10" total="98" errorcount="0" defaultsort="popularity+" description="top 100 tracks" name="top 100 tracks" ><track id="59672468" rating="-1" title="i kissed girl"><artist id="30326214" rating="-1">katy perry</artist><iteminfo><chartposition last="26" this="1"/></iteminfo></track><track id="47973564" rating="-1" title="shake it"><artist id="45575683" rating="-1">metro station</artist><iteminfo><chartposition last="27" this="2"/></iteminfo></track><track id="52207363" rating="-1" title="bleeding love"><artist id="37956508" rating="-1">leona lewis</artist><iteminfo><chartposition last="28" this="3"/></iteminfo></track></tracks></response>'), schema = { metafields: { session: "//session", total:"//tracks/@total" }, resultlistlocator: "//track", resultfields: [ {key:"song", locator:"@title"}, {key:"artist", locator:"artist"}, {key:"rank", locator:"iteminfo/chartposition/@this"} ] }, data_out = y.dataschema.xml.apply(schema, data_in); y.array.each(data_out.results, function (data) { // ... }) });
Comments
Post a Comment