E4X XML过滤只有一个结果

时间:2013-06-25 02:35:45

标签: xml actionscript-3 e4x

考虑这个XML:

<root>
    <node>
        <subNode>123</subNode>
        <anotherNode>abc</anotherNode>
    </node>
    <node>
        <anotherNode>abc</anotherNode>
    </node>
</root>

这样可行,因为E4X只找到1个匹配项,并返回XML而不是XMLList:

trace(myXml.node.subNode); // 123

但为什么这会引发Error #1065: Variable subNode is not defined

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

为什么不跟踪<anotherNode>abc</anothernode>

2 个答案:

答案 0 :(得分:1)

这不起作用,因为玩家试图在每个subNode中找到node,但它不能,因此会抛出ReferenceError异常。

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

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

答案 1 :(得分:0)

我测试过,似乎第二个节点没有subNode。所以尝试添加subNode(虽然我认为应该有另一种解决方法)。

<root>
   <node>
       <subNode>123</subNode>
       <anotherNode>abc</anotherNode>
    </node>
    <node>
        <subNode>321</subNode>
        <anotherNode>abc</anotherNode>
    </node>
</root>