E4X条件调用没有返回只有1个匹配的东西?

时间:2009-02-26 16:02:43

标签: xml actionscript-3 e4x

好的,这是我的代码:

var xml:XML = 
<xml>
    <typeA amount1="500" amount2="300" amount3="250" date="2008-02-17"/>
    <typeA amount1="500" amount2="300" amount3="250" date="2008-02-16"/>
    <typeA amount1="500" amount2="300" amount3="250" date="2008-02-17"/>
    <typeB amount1="500" amount2="300" amount3="250" date="2008-02-18"/>
    <typeB amount1="500" amount2="300" amount3="250" date="2008-02-19"/>
    <typeC amount1="500" amount2="300" amount3="250" date="2008-02-20"/>
    <typeC amount1="500" amount2="300" amount3="250" date="2008-02-21"/>
    <typeC amount1="500" amount2="300" amount3="250" date="2008-02-20"/>
</xml>;


trace(xml.typeA.(@date == "2008-02-16")); // no results
trace(xml.typeA.(@date == "2008-02-17")); // finds both
trace(xml.typeC.(@date == "2008-02-20")); // finds both
trace(xml.typeC.(@date == "2008-02-21")); // no results

似乎只有在发现超过1次时才发现它。

我做错了吗?

1 个答案:

答案 0 :(得分:6)

实际上它找到了它,但因为它只有一个项目,所以它将它作为XML(而不是XMList)来跟踪。 该节点为空它只会跟踪一个空字符串。

试试这个:

<typeA amount1="500" amount2="300" amount3="250" date="2008-02-16">Hello</typeA>

在调试XML时,最好使用toXMLString方法。

trace(xml.*.(@date="1980-04-29").toXMLString());