【问题标题】:Load XML into mxml (Flex AS3)将 XML 加载到 mxml (Flex AS3)
【发布时间】:2013-06-08 02:01:41
【问题描述】:

我正在尝试在文本区域中显示 xml 文件的内容(使用 Flex 4.7)。 但是我遇到了错误,我不知道为什么。

这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->         
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            
            var xmlLoader:URLLoader = new URLLoader();
            xmlLoader.addEventListener(Event.COMPLETE, loadXML); // 1st error here
            xmlLoader.load(new URLRequest("books.xml")); // 2nd error here
            
            var xmlData:XML = new XML();
            
            function loadXML(e:Event):void{             
                xmlData = new XML (e.target.data);              
            }               
        ]]>
    </fx:Script>
    
    <s:VGroup>      
        <s:TextArea id="txtArea">       
        </s:TextArea>               
    </s:VGroup>
    
</s:WindowedApplication>

这是我的错误:

这条线上有多个市场:

-1120:访问未定义的 propertyloadXML(第一个错误)

-1120:未定义属性 xmlLoader 的访问(第二个错误)

这是应用结构:

测试员

-src

--(默认包)

--- Tester.mxml

--books.xml

--Tester-app.xml

我不确定我做错了什么。谁能让我走上正轨?

谢谢!

【问题讨论】:

    标签: xml actionscript-3 apache-flex


    【解决方案1】:

    您的大部分 ActionScript 代码必须放在方法中;并且您有必须放入方法中的代码。变量定义没问题。导入语句没问题。我认为一些指令,比如 include 是可以的。但是,其他代码必须在方法中。

    这是您的注释代码:

    <fx:Script>
        <![CDATA[
    
            // this is a variable definition so it is good
            var xmlLoader:URLLoader = new URLLoader();
    
            // these two lines are code that executes; so they must be put inside a method; something you did not do.  Comment them out 
            //xmlLoader.addEventListener(Event.COMPLETE, loadXML); // 1st error here
            //xmlLoader.load(new URLRequest("books.xml")); // 2nd error here
    
            // this is a variable definition so it is okay
            var xmlData:XML = new XML();
    
            // this is a function definition so it is okay
            function loadXML(e:Event):void{             
                xmlData = new XML (e.target.data);              
            }               
    
            // move your executing code into a method
            public function load():void{
             xmlLoader.addEventListener(Event.COMPLETE, loadXML);
             xmlLoader.load(new URLRequest("books.xml"));
            }
        ]]>
    </fx:Script>
    

    我敢打赌,这消除了您的错误。但是,您还需要/需要做一些事情来执行该加载方法。何时执行此操作取决于数据在您的应用程序和当前组件中的使用方式。但是,我可能会添加一个预初始化事件侦听器:

    <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                           xmlns:s="library://ns.adobe.com/flex/spark" 
                           xmlns:mx="library://ns.adobe.com/flex/mx" 
                           preinitialize="load()">
    

    如果预初始化不起作用;我会将代码移至初始化事件。如果这不起作用;我会参加creationComplete 活动。

    【讨论】:

    • 非常感谢 Reboog711!像魅力一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多