考虑这个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>
?
答案 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>