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

时间:2011-02-08 03:07:48

标签: xml actionscript-3 actionscript 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>; 

只需将其转换为对象 - 这是否可以在不编写自己的解析器的情况下实现?谢谢。

2 个答案:

答案 0 :(得分: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"

来自外部文件的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' ) );

使用链接编辑

开始工作的一些不错的链接:

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

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

希望这会有所帮助。侨!

答案 1 :(得分:3)

您可以使用HTTPService

这里有一个很好的例子......

基本上,当您检索结果时,它会将结果序列化为XML中的对象。