1

私のXMLは次のようになります:

<?xml version="1.0" encoding="utf-8" ?>
<projects>
    <project 
        id="1"
        thumb="media/images/thumb.jpg"
        >
        <categories>
            <id>1</id>
            <id>2</id>
        </categories>
        <director>Director name</director>
        <name><![CDATA[IPhone commercial]]></name>
        <url><![CDATA[http://www.iphone.com]]></url>
        <description><![CDATA[Description about the project]]></description>
        <thumb><![CDATA[/upload/images/thumb.jpg]]></thumb>
    </project>
</projects>

しかし、カテゴリIDに基づいてプロジェクトをフィルタリングする方法がわかりませんか?誰かがその方法を知っていますか?:)

何かのようなもの:

projects.project.(categories.(id == 3))

すべてのアイテムを返すだけです:(

4

2 に答える 2

0

カスタム関数を使用しないより良い方法は次のとおりです。

projects.project.(categories.id.contains(1))

containsXMLまたはXMLListオブジェクトでチェックする単一の値を取ります。


追加の関数を使用して処理を行うことができます。

// check if any of the <id> nodes matches any of the given values
function containing(nodes, values) {
    for each(var id in nodes) {
        if(values.indexOf(parseInt(id)) !== -1) return true;
    }
    return false;
}

projects.project.(containing(categories.id, [1])); // matches the first project
projects.project.(containing(categories.id, [46])); // matches nothing
于 2010-05-19T10:25:51.273 に答える
0

projects.project..(id==3)IDが多い場合は問題になりますが、二重ドットでノードがスキップされるはずです。

これをactionScriptで実行している場合、e4xのすべての知識が得られます。これを実行projects.project.containing.(id==3).parent()すると、JSがその親メソッドをサポートするのか、それとも独自のメソッドを使用するのかわかりません。

于 2010-05-19T22:19:15.677 に答える