0

タグ フィルタリングをサポートするための最適な 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{

}

これを達成する方法についてのアイデアはありますか?

ありがとう!

4

2 に答える 2

0

テストされていませんが、動作するはずです。™</ p>

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;
}
于 2010-09-11T07:56:32.180 に答える
0

より良い方法を思いつくことはできませんが、関数でタグの数をカウントし、そのカウントで switch ステートメントを実行し、タグの数に対して適切な e4x を実行できます。

于 2010-04-23T16:04:01.757 に答える