【问题标题】:Loading a xml file into mxml(Adobe Flex)将 xml 文件加载到 mxml(Adobe Flex)
【发布时间】:2014-04-25 02:51:10
【问题描述】:

我实际上已经在 stackoverflow 上找到了这段代码。我想将一个 xml 加载到 mxml 中,然后将加载的数据转换为饼图或条形图。 代码如下:

<?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" 
                       creationComplete="load()">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->         
    </fx:Declarations>
    <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:VGroup>      
        <s:TextArea id="txtArea">       
        </s:TextArea>               
    </s:VGroup>

</s:WindowedApplication>

这是我在 stackoverflow 上找到的代码。但我仍然无法运行代码。

xml文件是这样的:

<?xml version="1.0" encoding="utf-8"?>
<Books>
<Manager Man_id="1" Man_Name="P.Ananth"/>
<Manager Man_id="2" Man_Name="Gokulakrishnan"/>
<Manager Man_id="3" Man_Name="Stani"/>
</Books>

我遇到的错误是:- 找不到组件类“loader2”的指定基类“spark.components.WindowedApplication”。 loader2.mxml -- /loader2/src -- 未知的 Flex 问题

【问题讨论】:

    标签: xml apache-flex adobe loading mxml


    【解决方案1】:

    您的项目似乎是 Flex web 项目。

    WindowedApplication 包含在 AIR SDK 中,这意味着您的项目需要是桌面应用程序项目。

    试试,

    • &lt;s:WindowedApplication&gt;&lt;s:Application&gt;

    添加:

    虽然 URLLoader 是一个非常重要的类,但一般情况下您可能希望使用 HTTPService。

    让我们看一下与上面的代码相同的代码:

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                   xmlns:s="library://ns.adobe.com/flex/spark"
                   xmlns:mx="library://ns.adobe.com/flex/mx"
                   creationComplete="service.send()">
    
        <fx:Declarations>
            <s:HTTPService id="service" resultFormat="e4x" url="books.xml"/>        
        </fx:Declarations>
    
        <s:VGroup>
            <s:TextArea id="txtArea" width="100%" text="{service.lastResult}"/>       
        </s:VGroup>
    
    </s:Application>
    

    是不是很简单?

    URLLoader 是 as3 类,Flex 框架是建立在 as3 之上的。 HTTPService 是 Fl​​ex 组件,它为您提供简单方便的功能。它在内部使用 URLLoader。

    【讨论】:

    • 谢谢。尽管错误消失了,但它显示了三个警告,并且在浏览器上没有显示任何内容。警告如下: (1) 此行的多个标记:-1084: var 'xmlLoader' 将作用于默认命名空间:loader2: internal。它在这个包之外是不可见的。 -行断点:loader2.mxml [line: 15] (2)1084: var 'xmlData' 将被限定为默认命名空间:loader2: internal。它在这个包之外是不可见的。 (3)1084: 函数 'loadXML' 将作用于默认命名空间:loader2: internal。
    • @Nav_cfc 现在让我们忽略警告。在var xmlData:XML ... 前面添加[Bindable] 并在&lt;s:TextArea&gt; 标签中添加text="{xmlData}"。然后你会看到一些东西。稍后会检查这些警告。
    • @Nav_cfc 我周末可能会离开,所以我发布了我建议的最终代码。对于这些警告,您可能需要将变量或方法的范围声明为privateprotectedpublic。例如:protected var xmlLoader:URLLoader = new URLLoader(); 在 ActionScript 3 中,强烈建议为每个变量和方法指定范围。
    • 非常感谢,它成功了。只是不能早点来感谢!
    猜你喜欢
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多