簡體   English   中英

Flex 4-如何以編程方式加載XML文件?

[英]Flex 4 - How to load XML file programmatically?

我已經使用HTTPService完成了EmployeeDetails應用程序。 但是我想以編程方式加載我的XML文件。 我嘗試使用URLLoader和URLRequest。 但是沒有運氣。 我做不到

使用HTTPService的示例代碼:

    <fx:Declarations>   
    <s:XMLListCollection id="employeeXMLList" filterFunction="xmlListCollectionFilterFun"/>
    <s:HTTPService id="employeeService" url="http://localhost/demo/TextXmlFile.xml" 
                   method="POST" result="employeeService_resultHandler(event)"
                   fault="employeeService_faultHandler(event)"
                   resultFormat="xml"/>
</fx:Declarations>
<fx:Script>
    <![CDATA[
        protected function employeeService_resultHandler(event:ResultEvent):void
        {
            var xmlList:XMLList = XML(event.result).Employee;
            employeeXMLList = new XMLListCollection(xmlList);
        }

        protected function employeeService_faultHandler(event:FaultEvent):void
        {
            spark.components.Alert.show(event.fault.faultString,"Fault Error Message");
        } 
    ]]>
</fx:Script>

運作良好。 現在,我將其更改如下:

<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"
           xmlns:components="components.*"
           minWidth="955" minHeight="600"
           creationComplete="load()">    
   <fx:Script>
    <![CDATA[
            private var request:URLRequest = new URLRequest("http://localhost/demo/TextXmlFile.xml");
        //request.contentType = "XML";
        //request.method = URLRequestMethod.POST;
        private var xmlData:XML;
        private var loader:URLLoader = new URLLoader();

        private function loadXML(event:Event):void
        {
            xmlData = new XML(event.target.date);               
        }

        private function load():void
        {
            loader.addEventListener(Event.COMPLETE, loadXML);
            loader.load(request);
        }

    ]]>
</fx:Script>

而且我不知道我在這里做了什么。 有人可以告訴我正確的方法嗎? 並請給我一些解釋嗎?

我的XML:

<?xml version="1.0" encoding="UTF-8"?>
<CompanyEmployees version="1">
    <Employee>
        <Name>John</Name>
        <Id>234</Id>
        <DOB>1990/04/02</DOB>
        <Designation>Project manager</Designation>
        <Department>Mobile</Department>
        <DOJ>2008/04/11</DOJ>
        <Experience>15</Experience>
        <Mobile>9999999999</Mobile>
        <Email>john.a@Sybrant.com</Email>
    </Employee>
    <Employee>
        <Name>Adya</Name>
        <Id>135</Id>
        <DOB>1989/04/21</DOB>
        <Designation>Software Engineer</Designation>
        <Department>Flex</Department>
        <DOJ>2009/05/15</DOJ>
        <Experience>5</Experience>
        <Mobile>76890678990</Mobile>
        <Email>adya@Sybrant.com</Email>
    </Employee>

</CompanyEmployees>

UPDATE

            private var urlRequest:URLRequest;
        urlRequest = new URLRequest("http://localhost/TextXmlFile.xml");
        urlRequest.contentType = "XML";
        urlRequest.method = URLRequestMethod.POST;

我收到諸如“訪問未定義的屬性urlRequest的錯誤”。

看來是拼寫錯誤。

private var request:URLRequest;
private var xmlData:XML;
private var loader:URLLoader = new URLLoader();

private function loadXML(event:Event):void
{
    xmlData = new XML(event.target.data);     //Note here data instead of date.          
}

private function load():void
{
    request = new URLRequest("http://localhost/demo/TextXmlFile.xml");
    request.contentType = "XML";
    request.method = URLRequestMethod.POST;
    loader.addEventListener(Event.COMPLETE, loadXML);
    loader.load(request);
}

原因:

您只能在函數之外聲明和初始化/實例化對象。

通常,編譯器期望函數的外部應該是變量聲明( protected/public/private )。 因此,我們無法在功能外分配那些值,例如

request.contentType = "XML";
request.method = URLRequestMethod.POST;

這是函數進入的確切位置。有時,如果所有必要的函數和變量都應該是靜態的,則possible with static block

有關AS3靜態塊的更多詳細信息https://www.google.co.in/search?q=static+block+in+as3

或簽出SO 我們可以在Flex庫中使用靜態初始化程序嗎?

檢查文檔: http : //help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM