【问题标题】:Turn an XML string into an Object in Actionscript在 Actionscript 中将 XML 字符串转换为对象
【发布时间】:2011-06-23 04:28:12
【问题描述】:

我对 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>; 

然后简单地将它变成一个 Object - 如果不编写我自己的解析器,这可能吗?谢谢。

【问题讨论】:

    标签: xml actionscript-3 actionscript xml-deserialization


    【解决方案1】:

    ActionScript 有自己的 XML 解析器,那么您无需编写自己的解析器。

    来自字符串的 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

    希望这会有所帮助。咻!

    【讨论】:

    • 我希望我可以标记两个答案,这也是正确的 - 我只是使用服务,所以更容易解决。谢谢!
    • 没关系,伙计。这是游戏规则,@Slomojo 是第一位的 ;-) 祝你好运!
    【解决方案2】:

    您可以使用HTTPService

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

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

    【讨论】:

    • 您好,HTTPService 工作正常,但需要 Flex SDK,如果您仅使用 Flash ide,则不可用。
    • 它是可用的,你可以得到SDK,因为它是免费的。但是,如果您只有一个 xml 字符串并且不需要 HTTPService 的其他功能,则只需执行 var x:XML = XML(string);
    • 哇...超级简单,我应该早点问这个问题的!
    猜你喜欢
    • 2012-07-11
    • 2011-03-12
    • 2013-04-03
    • 1970-01-01
    • 2013-06-20
    • 2018-11-27
    • 2015-01-13
    • 1970-01-01
    相关资源
    最近更新 更多