How to append a new node into a XML object in Flex/as3? Here's a simple example that teaches you how to append a XML node. Here's a guide on how to do it. But do take note that you have to use either _ or a letter for the first character of the name of the new node that you are trying to insert. However if you want to use numbers for the first character, there's a way to do it too. :P Besides for the ways that I have listed in this post, you can use dot notation (.) to append a new node too. :)
Source Code for the main application - 'SimpleXMLManipulation.mxml'<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="creationCompleteEvt(event)" xmlns:local="*"> <fx:Declarations> <local:SimpleXMLConverter id="converter"/> </fx:Declarations> <fx:Script> <![CDATA[ import mx.events.FlexEvent; protected function creationCompleteEvt(e:FlexEvent):void { converter.init(); } ]]> </fx:Script> <s:VGroup width="100%" height="100%" verticalAlign="middle" horizontalAlign="center"> <s:Label text="Original XML"/> <s:TextArea text="@{converter.simpleXML}"/> <s:Spacer height="10"/> <s:HGroup> <s:VGroup horizontalAlign="center"> <s:Label text="Modified XML using appendChild()"/> <s:TextArea text="{converter.simpleXML1}" editable="false" width="30%" minWidth="300"/> </s:VGroup> <s:VGroup horizontalAlign="center"> <s:Label text="Modified XML using []"/> <s:TextArea text="{converter.simpleXML2}" editable="false" width="30%" minWidth="300"/> </s:VGroup> </s:HGroup> </s:VGroup> </s:Application>
Source code for the XML manipulating class
package { import flash.events.Event; import flash.events.EventDispatcher; [Bindable] public class SimpleXMLConverter extends EventDispatcher { //XML String private var simpleXMLString:String = "* Click here for the demo shown in this post." + " "; //XML that contains the above simpleXMLString private var _simpleXML:XML; [Bindable(event="simpleXMLChanged")] public function get simpleXML():String { return _simpleXML; } public function set simpleXML(value:String):void { //If the input value isn't a valid XML, //we will set it to empty. try { _simpleXML = XML(value); }catch(e:Error) { _simpleXML = new XML(); } //Modified XML using appendChild() simpleXML1 = XML(_simpleXML.toXMLString()); if(simpleXML1) { var dummyXMLNode:XML; var dummyXMLNodeStr:String; dummyXMLNodeStr = "<" + name1Str + name2Str + ">"; dummyXMLNodeStr += valueStr; dummyXMLNodeStr += "" + name1Str + name2Str + ">"; dummyXMLNode = new XML(dummyXMLNodeStr); simpleXML1.appendChild(dummyXMLNode); if(simpleXML1.level1.length() > 0) { for(var i:int = 0; i < simpleXML1.level1.length(); i ++) { simpleXML1.level1[i].appendChild(dummyXMLNode); } } } //Modified XML using [] simpleXML2 = XML(_simpleXML.toXMLString()); if(simpleXML2) { simpleXML2[name1Str + name2Str] = valueStr; if(simpleXML2.level1.length() > 0) { for(i = 0; i < simpleXML2.level1.length(); i ++) { simpleXML2.level1[i][name1Str + name2Str] = valueStr; } } } //dispatching the 8 event to update the //respective text area dispatchEvent(new Event("simpleXML1Changed", true, true)); dispatchEvent(new Event("simpleXML2Changed", true, true)); } //XML that contains the modified XML based //on the above simpleXMLString and appendChild() private var _simpleXML1:XML; public function get simpleXML1():XML { return _simpleXML1; } [Bindable(event="simpleXML1Changed")] public function set simpleXML1(value:XML):void { _simpleXML1 = value; } //XML that contains the modified XML based //on the above simpleXMLString and [] private var _simpleXML2:XML; public function get simpleXML2():XML { return _simpleXML2; } [Bindable(event="simpleXML2Changed")] public function set simpleXML2(value:XML):void { _simpleXML2 = value; } //The name of the empty node - part1 private var name1Str:String = "empty"; //The name of the empty node - part2 private var name2Str:String = "node"; //The value of the empty node private var valueStr:String = "dummyValue"; public function init():void { simpleXML = new XML(simpleXMLString); //dispatching the event to update the main //respective text area dispatchEvent(new Event("simpleXMLChanged", true, true)); } } }
^ Click here for the source files for the demo.