E4X XML筛选和仅一个结果
考虑以下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>
<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);