2012-08-09 2 views
0

데이터베이스에 연결하는 flex 응용 프로그램이 있습니다. 데이터베이스가 실행되는 여러 서버가 있습니다. 현재 사용자가 연결할 데이터베이스를 지정할 수있는 '호스트'및 '포트'라는 텍스트 상자가 있습니다. 호스트 목록이있는 ComboBox로 변경하고 싶습니다. 응용 프로그램에서 하드 코드하는 방법을 알고 있지만 시작할 때 XML (또는 기타) 파일을 읽고 ComboBox의 내용을 채우는 응용 프로그램 (나중에 데이터베이스 IP가 변경되는 경우)을 선호합니다. XML은 다음과 같이 보입니다.Flex : 호스트 목록이있는 파일을 읽으십시오.

<root> 
    <host ip="123.123.123.123" port="1234"/> 
    <host ip="255.255.255.123" port="2700"/> 
    <host ip="18.12.65.123" port="1270"/> 
</root> 

어떻게하면됩니까? 나는 응용 프로그램과 함께 서버에 파일을 호스트하고 싶습니다.

+0

체크 아웃 [은 URLLoader (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/ 3/flash/net/URLLoader.html) class – RIAstar

+0

이 작업을 수행하려면 전체 URL을 지정해야합니까? 응용 프로그램은 두 개의 서버 (http://serverA.com/ 및 http://serverB.com/)에서 호스팅됩니다. 이 서버 각각에 대해 http://serverA.com/hosts.xml 및 http://serverB.com/hosts.xml을로드하려고합니다. 불완전한 URL "/hosts.xml"을 지정할 수 있습니까? 여전히 작동합니까? – user1546927

답변

0

URLLoader 클래스를 사용하여 서버에서 파일을로드해야합니다. 그러면 로더의 데이터를 읽을 수 있습니다.

예를 들어

:

private var loader:URLLoader; 
private function init():void { 
    loader=new URLLoader(); 
    loader.addEventListener(Event.COMPLETE, dataLoaded); 
    loader.dataFormat=URLLoaderDataFormat.TEXT; 
    var req:URLRequest=new URLRequest("http://my-server/path/to/file"); 
    loader.load(req); 
} 

private function dataLoaded(e:Event):void { 
    loader.removeEventListener(Event.COMPLETE, dataLoaded); 
    var data:String=loader.data; 

    //If the file is a flat text file (with 123.123.123.123:1234 on each line) 
    var lines:Array=data.split("\n"); 
    for each(var line:String in lines) { 
     var i:Array=line.split(":"); 
     trace("ip: " + i[0]); 
     trace("\nport: " + i[1]); 
    } 

    //If the file is an xml, do this 
    var x:XML=new XML(data); 
    for each(var host:XML in x.host) { 
     trace("ip: " + [email protected]); 
     trace("\nport: " + [email protected]); 
    } 
} 

을 그리고 네, 당신이 사용할 수있는 상대 URL

관련 문제