[英]Need help with XMLList in Flex
例如,我具有以下结构的XML
<root>
<node flag="false"/>
<node flag="true"/>
<node flag="false"/>
<node flag="false"/>
<node flag="true">
<node flag="false"/>
<node flag="true"/>
<node flag="false"/>
<node flag="true"/>
</node>
<node flag="true"/>
<node flag="false">
<node flag="false"/>
<node flag="true"/>
<node flag="false"/>
<node flag="true"/>
</node>
<node flag="false"/>
</root>
所有子代的名称均为“节点”。 我需要的是获取具有相同层次结构的XMLList(或XML,无论如何),但仅包含带有标志“ true”的节点。
我的示例需要的结果是:
<root>
<node flag="true"/>
<node flag="true">
<node flag="true"/>
<node flag="true"/>
</node>
<node flag="true"/>
</root>
有没有什么好方法可以使用e4x(无需循环遍历)进行此操作? 我尝试执行以下操作:xml.node。(@ flag ==“ true”),但是在这种情况下的结果是:
<root>
<node flag="true"/>
<node flag="true">
<node flag="false"/> <!--need to kill this node-->
<node flag="true"/>
<node flag="false"/> <!--need to kill this node-->
<node flag="true"/>
</node>
<node flag="true"/>
</root>
有任何想法吗? 谢谢!
在这里,您可以在e4x
使用一个衬板:
xml..node.((@flag=="false") && (delete parent().children()[valueOf().childIndex()]))
它会删除当前XML
的节点,因此请注意拥有当前XML的副本。
顺便说一句,您应该知道e4x
只是在引擎盖下做一个循环,而且一个衬纸不会比自定义循环快。
var xml:XML=<root>
<node id="1" flag="false"/>
<node id="2" flag="true"/>
<node id="3" flag="false"/>
<node id="4" flag="false"/>
<node id="5" flag="true">
<node id="5.1" flag="false"/>
<node id="5.2" flag="true"/>
<node id="5.3" flag="false"/>
<node id="5.4" flag="true"/>
</node>
<node id="6" flag="true"/>
<node id="7" flag="false">
<node id="7.1" flag="false"/>
<node id="7.2" flag="true"/>
<node id="7.3" flag="false"/>
<node id="7.4" flag="true"/>
</node>
<node id="8" flag="false"/>
</root>
trace("-- before --")
trace(xml.toXMLString())
xml..node.((@flag=="false") && (delete parent().children()[valueOf().childIndex()]))
trace("\n-- after --")
trace(xml.toXMLString())
它没有杀死那些节点,导致您的条件xml.node。(@ flag =“ true”)仅在root的直接子节点上起作用,您必须为node的子节点再创建一个节点
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.