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..(id==3)双点跳过任何节点,但如果你有更多的 id,这是一个问题。

现在,如果我在 actionScript 中执行此操作,这是我所有 e4x 知识的来源,我会这样做,projects.project.containing.(id==3).parent()我不确定 JS 是否支持该父方法,或者它是否有它自己的方法。

于 2010-05-19T22:19:15.677 回答
0

这是不使用任何自定义函数的更好方法:

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

contains在 XML 或 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 回答