将XML字符串转换为Actionscript中的Object

nas*_*ski 0 xml actionscript actionscript-3 xml-deserialization

我是AS的新手,我假设有一种方法可以做到这一点,我只是没有搞清楚.基本上,我试图使用一个返回xml并返回一个Object的服务,而不管xml的结构如何.在.Net中我使用XmlSerializer.Deserialize类...在AS中是否有等价物?

我能够找到SimpleXMLDecoder,但我似乎无法让它工作 - 它看起来也可能只适用于节点?无论哪种方式,那里的例子很稀疏而且很难遵循,我只想知道如何把xml这样:

<?xml version=\"1.0\" encoding=\"utf-8\"?>
<Company>
    <Id>2</Id>
    <Name>Stan</Name>
    <Size>10</Size>
</Company>; 
Run Code Online (Sandbox Code Playgroud)

简单地把它变成一个对象 - 这可能不用编写我自己的解析器吗?谢谢.

lom*_*anf 5

ActionScript有自己的XML解析器,因此您无需编写自己的解析器.

来自String的XML

如果你有String转换,你可以将它转换为XML内联几行代码,如下所示:


import flash.xml.*;

var xml : XML = XML( '<?xml version="1.0" encoding="utf-8"?><Company><Id>2</Id><Name>Stan</Name><Size>10</Size></Company>' );

trace( 'Id:' + xml.Id ); // Should trace "2"
trace( 'Name:' + xml.Name ); // Should trace "Stan"

Run Code Online (Sandbox Code Playgroud)

来自外部文件的XML

否则,您可以通过以下方式在运行时加载它:


import flash.net.*;
import flash.events.*;
import flash.xml.*;

var xmlLoader : URLLoader = new URLLoader();
xmlLoader.addEventListener( Event.COMPLETE, doStuffWithLoadedXML );

function doStuffWithLoadedXML( e : Event ) : void 
{                             
    var xml : XML = new XML( e.target.data );
    trace( 'Id:' + xml.Id ); // Should trace "2"
    trace( 'Name:' + xml.Name ); // Should trace "Stan"
}

xmlLoader.load( new URLRequest( 'yourfile.xml' ) );

Run Code Online (Sandbox Code Playgroud)

用链接编辑

一些很好的链接开始工作:

基本
http://blog.theflashblog.com/?p=242

一些不错的E4X技巧和操作方法
http://www.senocular.com/flash/tutorials/as3withflashcs3/?page=4

希望这可以帮助.再见!