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)
简单地把它变成一个对象 - 这可能不用编写我自己的解析器吗?谢谢.
ActionScript有自己的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)
否则,您可以通过以下方式在运行时加载它:
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
希望这可以帮助.再见!