On 11/10/2011 17:13, Glen Pike wrote:

Hi,

    You would have to:

    1 Create a new XML node,

    myNewNode = <my_xml/>

    2.  Select nodes from the existing XML where id != "a"

    var nodes:XMLList = my_xml.child("row).attribute("id" != "a");

    3.  Select nodes from existing XML where id = "a"

var parentNodes:XMLList = my_xml.child("row).attribute("id" != "a");

    4.  Conditionally, Append result of 3 to your new node.

    var parent:XML;
    if(0 != parentNodes.length()) {
        parent = myNewNode.appendChild(parentNodes[0]);
    }

    5.  Append result of 2 to your new node id="a"

    if(parent) {
        for each(var node:XML in nodes) {
            parent.appendChild(node);
        }
    }

    This is untested, so please try and see how you get on.

There may be a neater way, but I found deleting nodes based on e4x results sometimes problematic...

Thanks Glenn. My example was really all about the "problematic" deleting bit! In real life I was manipulating some XML with 1500 nodes, incorrectly nested. I could copy the nodes into the correct place but not remove them from where they originally started from.

In the context of the example I started with:

myXMLNode =
<my_xml>
<row id="a" />
<row id="b" />
<row id="c" />
</my_xml>;

ended up with:

<my_xml>
<row id="a">
<row id="b" />
<row id="c" />
</row>
<row id="b" />
<row id="c" />
</my_xml>

instead of :

<my_xml>
<row id="a">
<row id="b" />
<row id="c" />
</row>
</my_xml>

I couldn't figure an easy way to reference the tailing "b" and "c" rows that I had left behind in order to remove them from their parent.

What I really wanted to do was delete  row.(@id=="b").

I should say that a better representation of what I wanted to do (just using e4X) is this:

Make

<my_xml>
<row id="a" parent="a" />
<row id="b" parent="a" />
<row id="c" parent="a" />
</my_xml>

into:

<my_xml>
<row id="a" parent="a">
<row id="b" parent="a"/>
<row id="c" parent="a"/>
</row>
</my_xml>


as you say deletion was the problem.


Paul


    Hope this helps.

    Glen

On 11/10/2011 16:54, Paul Andrews wrote:
On 11/10/2011 16:33, Merrill, Jason wrote:
<  row id="c" />
</row>

And

<  row id="c" />
</row>


Are not valid XML.  Therefore, I'm not clear on what you want to do. :)
Hmm..

myXMLNode =
<my_xml>
<row id="a" />
<row id="b" />
<row id="c" />
</my_xml>;

into:

<my_xml>
<row id="a">
<row id="b" />
<row id="c" />
</row>
</my_xml>

I didn't realise the space was there - not intended- too much going on at once!



  Jason Merrill
  Instructional Technology Architect II
  Bank of America  Global Learning





_______________________

-----Original Message-----
From: flashcoders-boun...@chattyfig.figleaf.com [mailto:flashcoders-boun...@chattyfig.figleaf.com] On Behalf Of Paul Andrews
Sent: Tuesday, October 11, 2011 9:53 AM
To: flashcoders@chattyfig.figleaf.com
Subject: [Flashcoders] E4X XML manipulation

What's the best way to turn

this:

myXMLNode =
<my_xml>
<  row id="a" />
<  row id="b" />
<  row id="c" />
</my_xml>;

into:

<my_xml>
<  row id="a">
<  row id="b" />
<  row id="c" />
</row>
</my_xml>

Using some E4X?

It's not so much a case of adding b and c as children of a, but of removing them so I don't end up with:

<my_xml>
<  row id="a">
<  row id="b" />
<  row id="c" />
</row>
<  row id="b" />
<  row id="c" />
</my_xml>

Paul



_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

----------------------------------------------------------------------
This message w/attachments (message) is intended solely for the use of the intended recipient(s) and may contain information that is privileged, confidential or proprietary. If you are not an intended recipient, please notify the sender, and then please delete and destroy all copies and attachments, and be advised that any review or dissemination of, or the taking of any action in reliance on, the information contained in or attached to this message is prohibited. Unless specifically indicated, this message is not an offer to sell or a solicitation of any investment products or other financial product or service, an official confirmation of any transaction, or an official statement of Sender. Subject to applicable law, Sender may intercept, monitor, review and retain e-communications (EC) traveling through its networks/systems and may produce any such EC to regulators, law enforcement, in litigation and as required by law. The laws of the country of each sender/recipient may impact the handling of EC, and EC may be archived, supervised and produced in countries other than the country in which you are located. This message cannot be guaranteed to be secure or free of errors or viruses.

References to "Sender" are references to any subsidiary of Bank of America Corporation. Securities and Insurance Products: * Are Not FDIC Insured * Are Not Bank Guaranteed * May Lose Value * Are Not a Bank Deposit * Are Not a Condition to Any Banking Service or Activity * Are Not Insured by Any Federal Government Agency. Attachments that are part of this EC may have additional important disclosures and disclaimers, which you should read. This message is subject to terms available at the following link: http://www.bankofamerica.com/emaildisclaimer. By messaging with Sender you consent to the foregoing.
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders



_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to