繁体   English   中英

将XML加载到mxml(Flex AS3)

[英]Load XML into mxml (Flex AS3)

我试图在textarea中显示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(第1个错误)

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

这是应用程序结构:

测试仪

- src

- (默认包)

--- Tester.mxml

- books.xml

- Tester-app.xml

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

谢谢!

大多数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>

我打赌会删除你的错误。 但是,您还需要/需要执行某些操作来执行该加载方法。 执行此操作时,取决于数据在应用程序和当前组件中的使用方式。 但是,我可能会添加一个preinitialize事件监听器:

<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()">

如果预初始化不起作用; 我将代码移动到initialize事件。 如果这不起作用; 我要去创建完成事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM