E4X XML筛选和仅一个结果

E4X XML筛选和仅一个结果,xml,actionscript-3,e4x,Xml,Actionscript 3,E4x,考虑以下XML: <root> <node> <subNode>123</subNode> <anotherNode>abc</anotherNode> </node> <node> <anotherNode>abc</anotherNode> </node> </root>

考虑以下XML:

<root>
    <node>
        <subNode>123</subNode>
        <anotherNode>abc</anotherNode>
    </node>
    <node>
        <anotherNode>abc</anotherNode>
    </node>
</root>
但是为什么这会抛出一个
错误#1065:未定义变量子节点

trace(myXml.node.(subNode == 123).anotherNode);

为什么它不跟踪abc呢?

我已经测试过了,似乎第二个节点没有子节点。因此,尝试添加子节点(尽管我认为应该有另一种方法来解决这个问题)


123
abc
321
abc

这不起作用,因为播放机试图在每个
节点中查找
子节点
,但找不到,因此引发异常

在这种情况下,可以使用方法确保属性存在:

trace(myXml.node.(hasOwnProperty("subNode") && subNode == 123).anotherNode);

很明显,第二个节点没有子节点,这正是我的观点。我知道它不起作用,因为E4X只找到一个结果,因此它返回一个XML而不是XMLList。我的问题是为什么这会影响E4X的过滤能力。
<root>
   <node>
       <subNode>123</subNode>
       <anotherNode>abc</anotherNode>
    </node>
    <node>
        <subNode>321</subNode>
        <anotherNode>abc</anotherNode>
    </node>
</root>
trace(myXml.node.(hasOwnProperty("subNode") && subNode == 123).anotherNode);