在AS3中处理XML非常容易,以下是一些代码来扩展TheDarkIn1978的回答:
创建一个XML对象:
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 />
使用AS3中的TheDarkIn1978's XML类来了解更多相关信息。
保存您的文件:
// saving out a file
var f:FileReference = new FileReference
f.save( sx, "myXML.xml" )
在保存XML文件之前进行压缩(对于大型XML文件,这可以节省很多空间):
// compressing before saving
var f:FileReference = new FileReference
var bytes:ByteArray = new ByteArray
bytes.writeUTFBytes( myXML )
bytes.compress()
f.save( bytes, "myXML.xml" )
加载压缩的XML,解压它并检索XML对象:
var loader = new URLLoader;
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener( Event.COMPLETE, this._onLoad );
loader.addEventListener( IOErrorEvent.IO_ERROR, this._onFail );
loader.addEventListener( SecurityErrorEvent.SECURITY_ERROR, this._onSecurityError );
private function _onLoad( e:Event ):void
{
var loader:URLLoader = e.target as URLLoader;
var ba:ByteArray = loader.data as ByteArray;
try
{
ba.uncompress();
}
catch ( e:Error )
{
trace( "The ByteArray wasn't compressed!" );
}
myXML = XML( ba );
}
我创建了一个简单的工具,用于压缩/解压缩XML文件。如果您感兴趣,可以在
http://divillysausages.com/blog/xml_compressor_uncompressor获取SWF和源代码。
var 'f':FileReference = new FileReference; file.save( 'myXML', "myXML.xml" ); // saves under the name myXML.xml, "myXML" being y
请将f更改为file。并且将“myXML”更改为“sx”。其中我引用了'f','myXML'
”。(从即将删除的答案中复制)。 - Craig Ringer