Frage

Ich habe XML mit der folgenden Struktur, zum Beispiel generasacodicetagpre.

Alle Kinder haben den Namen "Knoten".Was ich brauche, ist, eine Xmllist (oder XML, egal) mit derselben Hierarchie, aber nur Knoten mit der Flagge "True" enthalten.

Das Ergebnis, das ich für mein Beispiel brauche, ist: generasacodicetagpre.

Gibt es nette Möglichkeit, dies mit E4X (ohne itertieren durch Schleife) zu tun?Ich habe versucht, das Folgende zu tun: XML.Node. (@ flag=="true"), aber das Ergebnis in diesem Fall ist: generasacodicetagpre.

Alle Ideen?Danke!

War es hilfreich?

Lösung

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())

Andere Tipps

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top