我正在努力想出最好的xml架构来支持标签过滤。然后是一个在一系列标签上过滤xml的方法。所以这是xml:
var videoXML:XML=
<?xml version="1.0" encoding="UTF-8"?>
<videos>
<video> <tags label="dogs,brown,lawns" /> </video>
<video> <tags label="dogs,cats" /> </video>
<video> <tags label="cats,lawns" /> </video>
</videos>
我现在过滤的方式是:
var filteredList:XMLList = videoXML..video.tags.(@label.indexOf("lawns") != -1 && @label.indexOf("dogs") != -1);
只返回带有“草坪”和“狗”标签的视频,这一切都很好。
但我想要一个方法,我可以传入尽可能多的标签,并获得该过滤器的结果。
类似的东西:
function getFilteredByTags(...tags):XMLList{
}
关于如何实现这一目标的任何想法?
谢谢!
答案 0 :(得分:0)
我无法想出一个更好的方法,但是你的函数可以计算出有多少标签,然后在该计数上运行一个switch语句,并为标签数量做正确的e4x。
答案 1 :(得分:0)
未经测试,但应该工作。™
将您的XML更改为:
var videoXML:XML=
<?xml version="1.0" encoding="UTF-8"?>
<videos>
<video>
<tag label="dogs" />
<tag label="brown" />
<tag label="lawns" />
</video>
<video>
<tag label="dogs" />
<tag label="cats" />
</video>
<video>
<tag label="cats" />
<tag label="lawns" />
</video>
</videos>
返回包含多个标签的视频的功能:
function getFilteredByTags(...tags):XMLList
{
// Start with a list of all videos
var foundVideos:XMLList = videoXML.video;
for each (tag in tags)
{
// Filter foundVideos down to those videos that match tag
foundVideos = foundVideos.(tag.@label == tag);
}
return foundVideos;
}