Flex에서 Xmllist에 도움이 필요합니다
-
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 (또는 WATER)를 동일하지만 플래그 "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