Working with XML in AS3 is very simple, so deploy the response to TheDarkIn1978 using some code:
Creating an XML Object:
var objs:XML = new XML( <objects /> ); // create the <objects /> node // for your objects var ball1:XML = new XML ( <ball /> ); // create the <ball /> node ball1.@xPos = 12; // add 12 as an attribute named "xPos" ball1.@yPos = 42; // add 42 as an attribute named "yPos" objs.appendChild( ball1 ); // add the <ball> node to <objects> // an example of using variables in your xml var name:String = "something"; var sx:XML = new XML( <{name} /> ); // creates a node <something />
Use TheDarkIn1978 for the XML class in AS3 to learn more.
File Saving:
Compressing your XML before saving (with large XML files this can save a lot):
// compressing before saving var f:FileReference = new FileReference; var bytes:ByteArray = new ByteArray; bytes.writeUTFBytes( myXML ); // "myXML" being your root XML node bytes.compress(); // compress it f.save( bytes, "myXML.xml" );
Download in compressed XML, extract and extract the XML object:
// uncompressing a compressed xml var loader = new URLLoader; loader.dataFormat = URLLoaderDataFormat.BINARY; // listen for our events loader.addEventListener( Event.COMPLETE, this._onLoad ); loader.addEventListener( IOErrorEvent.IO_ERROR, this._onFail ); // not shown loader.addEventListener( SecurityErrorEvent.SECURITY_ERROR, this._onSecurityError ); // not shown private function _onLoad( e:Event ):void { var loader:URLLoader = e.target as URLLoader; // get the data as a bytearray var ba:ByteArray = loader.data as ByteArray; // uncompress it try { ba.uncompress(); } catch ( e:Error ) { trace( "The ByteArray wasn't compressed!" ); } // get our xml data myXML = XML( ba ); }
I created a simple tool to compress / decompress XML files. You can get the SWF and source at http://divillysausages.com/blog/xml_compressor_uncompressor if you are interested
source share