需要帮助xmllist在flex中
-
15-11-2019 - |
题
我有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>
.
任何想法?谢谢!
解决方案
Here a one liner in e4x
as you ask :
xml..node.((@flag=="false") && (delete parent().children()[valueOf().childIndex()]))
it delete the node to the current XML
so pay attention to have a copy of your current XML.
By the way you should know that e4x
just do a loop under the hood, and that one liner will not be faster than a custom loop.
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())
其他提示
It didn't kill those nodes, cause your condition xml.node.(@flag="true") works only on the direct children of root, you have to make another one for the children of node
不隶属于 StackOverflow