繁体   English   中英

在Flex中使用XMLList需要帮助

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM