RE: [flexcoders] Re: XMLFiltering by attributes and values

2009-08-17 Thread Keith Reinfeld
This works well: 

 

var _trackData:XML = track 

item uniqueTrackId=100 albumId=12 trackId=1 genreId=13
artistId=6584/ 

item uniqueTrackId=101 albumId=13 trackId=2 genreId=14
artistId=6580/ 

item uniqueTrackId=102 albumId=14 trackId=3 genreId=15
artistId=6584/ 

item uniqueTrackId=103 albumId=15 trackId=4 genreId=16
artistId=6583/ 

/track; 

 

function doXMLFilter(nodes:XML,att:String,val:String):XMLList{ 

// Returns all node elements with an attribute that equals
value. 

return nodes.elements(*).(@[att.toString()] == val); 

} 

 

var _data:XMLList = doXMLFilter(_trackData,artistId,6584); 

trace(_data.toXMLString()); 

 

- Keith 

 

 

From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On
Behalf Of valdhor
Sent: Monday, August 17, 2009 11:15 AM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: XMLFiltering by attributes and values

 

  

I haven't looked at your code too much but what jumped out at me is this
line...

filterData = filterData.(attribute(prop.name) == prop.value);

This will try to evaluate attribute as a function with parameter prop.name
and then compare that to prop.value returning a boolean. So, the upshot is
that Flex will try to evaluate filterData.true or filterData.false. I'm
pretty sure that won't work.

--- In flexcoders@yahoogroups.com mailto:flexcoders%40yahoogroups.com ,
fatmanchan2009 fatmanchan2...@... wrote:

 Hello
 
 Can anyone figure out this problem im currently having, and explain the
reasons and cause of this proplem.
 
 I have an XML file of track data with a bunch of attributes
 
 track
 item uniqueTrackId=100 albumId=12 trackId=1 genreId=13
artistId=6584
 ...
 /track
 
 i use this code to execute the filtering on the data, the name is artistId
and the value is 6584, so the data should come back with all the artists
with artistId 6584. 
 
 var filterData : XMLList = _trackData.item;
 
 for each (var prop : Object in _propertiesList)
 {
 filterData = filterData.(attribute(prop.name) == prop.value);
 }
 
 but i keep getting this exception, when its applyin the filter, so within
the for loop 
 
 TypeError: Error #1006: value is not a function.
 
 So anyone that can figure what the problem is, would be a big help Thank
You 
 
 
 Stephen Chan




image001.jpgimage002.jpg

RE: [flexcoders] Re: XMLFiltering by attributes and values

2009-08-17 Thread Keith Reinfeld
That comment should read:  

 

// Returns all node elements with the named attribute that equals value. 

 

- Keith 

 

From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On
Behalf Of Keith Reinfeld
Sent: Monday, August 17, 2009 1:15 PM
To: flexcoders@yahoogroups.com
Subject: RE: [flexcoders] Re: XMLFiltering by attributes and values

 

  

This works well: 

 

var _trackData:XML = track 

item uniqueTrackId=100 albumId=12 trackId=1 genreId=13
artistId=6584/ 

item uniqueTrackId=101 albumId=13 trackId=2 genreId=14
artistId=6580/ 

item uniqueTrackId=102 albumId=14 trackId=3 genreId=15
artistId=6584/ 

item uniqueTrackId=103 albumId=15 trackId=4 genreId=16
artistId=6583/ 

/track; 

 

function doXMLFilter(nodes:XML,att:String,val:String):XMLList{ 

// Returns all node elements with an attribute that equals
value. 

return nodes.elements(*).(@[att.toString()] == val); 

} 

 

var _data:XMLList = doXMLFilter(_trackData,artistId,6584); 

trace(_data.toXMLString()); 

 

- Keith 

 

 

From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On
Behalf Of valdhor
Sent: Monday, August 17, 2009 11:15 AM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: XMLFiltering by attributes and values

 

  

I haven't looked at your code too much but what jumped out at me is this
line...

filterData = filterData.(attribute(prop.name) == prop.value);

This will try to evaluate attribute as a function with parameter prop.name
and then compare that to prop.value returning a boolean. So, the upshot is
that Flex will try to evaluate filterData.true or filterData.false. I'm
pretty sure that won't work.

--- In flexcoders@yahoogroups.com mailto:flexcoders%40yahoogroups.com ,
fatmanchan2009 fatmanchan2...@... wrote:

 Hello
 
 Can anyone figure out this problem im currently having, and explain the
reasons and cause of this proplem.
 
 I have an XML file of track data with a bunch of attributes
 
 track
 item uniqueTrackId=100 albumId=12 trackId=1 genreId=13
artistId=6584
 ...
 /track
 
 i use this code to execute the filtering on the data, the name is artistId
and the value is 6584, so the data should come back with all the artists
with artistId 6584. 
 
 var filterData : XMLList = _trackData.item;
 
 for each (var prop : Object in _propertiesList)
 {
 filterData = filterData.(attribute(prop.name) == prop.value);
 }
 
 but i keep getting this exception, when its applyin the filter, so within
the for loop 
 
 TypeError: Error #1006: value is not a function.
 
 So anyone that can figure what the problem is, would be a big help Thank
You 
 
 
 Stephen Chan




image001.jpgimage002.jpg