SO xml filtering
/**
* Copyright pleclech ( http://wonderfl.net/user/pleclech )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/10xr
*/
// forked from pleclech's forked from: flash on 2011-2-25
// forked from pleclech's flash on 2011-2-25
package {
import flash.utils.getTimer;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
if (stage) _init()
else addEventListener(Event.ADDED_TO_STAGE, _init)
}
import flash.text.TextField;
import flash.events.Event;
private var tf:TextField=new TextField()
private function trace(...args):void{
tf.appendText(args.join(", ")+"\n")
}
private function _init(e:Event=null):void {
removeEventListener(Event.ADDED_TO_STAGE, _init)
addChild(tf)
tf.autoSize="left"
tf.background=true
test1()
}
private function filter(xml:XML):XMLList {
var seen:Object={}
return xml..@iname.(!seen[valueOf()]&&(seen[valueOf()]=true))
}
private function test1():void{
var xml:XML=
<universe>
<category cname="cat 1">
<item iname="All"/>
<item iname="item 1"/>
<item iname="item 2"/>
</category>
<category cname="cat 2">
<item iname="All"/>
<item iname="item 3"/>
<item iname="item 4"/>
</category>
</universe>
trace("non filtered : ")
trace(xml..@iname)
trace()
trace("filtered : ")
trace(filter(xml))
}
}
}