【问题标题】:mulitple attribute xml filter as3 e4x多属性 xml 过滤器 as3 e4x
【发布时间】:2011-02-11 03:41:13
【问题描述】:

我正在尝试提出最好的 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{

}

关于如何做到这一点的任何想法?

谢谢!

【问题讨论】:

    标签: xml actionscript-3 filtering e4x


    【解决方案1】:

    未经测试,但应该可以工作。™

    将您的 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;
    }
    

    【讨论】:

      【解决方案2】:

      我想不出更好的方法,但是您的函数可以计算有多少标签,然后在该计数上运行 switch 语句并为标签数量执行正确的 e4x。

      【讨论】:

        猜你喜欢
        • 2010-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-13
        • 1970-01-01
        • 2016-02-11
        • 1970-01-01
        相关资源
        最近更新 更多