2011-09-13 41 views
2

我有一個問題,而從XML文件中的動作腳本3動作腳本3個讀取值

閱讀這是我的XML文件:

<config> 

    <production> 
     <app_id>123</app_id> 
     <server_path>http://someLinktoAccess</server_path> 
     <assets_server>http://someLinktoAccess</assets_server> 
     <payment_url_callback>http://someLinktoAccess</payment_url_callback> 
    </production> 

    <stage> 
     <app_id>123</app_id> 
     <server_path>http://someLinktoAccess</server_path> 
     <assets_server>http://someLinktoAccess</assets_server> 
     <payment_url_callback>http://someLinktoAccess</payment_url_callback> 
    </stage> 

    <dev> 
     <app_id>123</app_id> 
     <server_path>http://someLinktoAccess</server_path> 
     <assets_server>http://someLinktoAccess</assets_server> 
     <payment_url_callback>http://someLinktoAccess</payment_url_callback> 
    </dev> 

    </config> 

我想訪問每個鍵值對在這個文件中。所以我想從這裏得到4個字符串變量:app_id,server_path,assets_server,payment_url_callback。我怎樣才能得到它們?

現在我用這樣的代碼:

private function loadXmlConfig():void 
     { 
      //load the loading config xml 
      var xmlLoader:URLLoader = new URLLoader(); 
      var load_config_path:String = "http://dl.dropbox.com/u/28744968/android_vs.xml"; 
      xmlLoader.addEventListener(Event.COMPLETE, xmlConfigLoadingSuccessed); 
      xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, xmlConfigLoadingFailed); 
      xmlLoader.load(new URLRequest(load_config_path)); 
     } 

     private function xmlConfigLoadingSuccessed(event:Event):void 
     { 
      var load_config:XML = new XML(event.target.data); 
      trace(load_config.config.dev.app_id.value); 
      //startup facade 
      GameFacade.getInstance().startup(StartupCommand, this); 
     } 

將文件加載的所有值,但我不能訪問任何人。

什麼是說:

var library:XML 
[email protected] 

謝謝!

+1

嘗試。 html – www0z0k

+0

@yozhik你有'trace(load_config.config.dev.app_id.value);',嘗試'trace(load_config.dev.app_id.value);'。 – Taurayi

回答

3

當使用XML類,你不引用根節點你的情況「配置」

// your code 
trace(load_config.config.dev.app_id.value); 

// correct code 
// the toString method should be called automatically 
trace(load_config.production.app_id); 


並回答您的其他問題。

var library:XML 
[email protected] 

@符號用於訪問屬性。

<library id=123 > 



你爲什麼把你的配置文件作爲一個XML呢?
這種類型的東西,我創建一個配置文件/類/辛格爾頓。

+0

我正在使用xml文件,因爲我的服務器可以從一個移動到另一個,並避免重新編譯我的應用程序 - 我使用的XML文件與所有配置那裏,我可以輕鬆修改它們。 – yozhik

+0

我爲你添加了一個編輯。 –

1

這裏是我的這個解決方案,莫比它可以幫助人後:使用`XMLList` http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/XMLList

private function loadXmlConfig():void 
    { 
     //load the loading config xml 
     var xmlLoader:URLLoader = new URLLoader(); 
     var load_config_path:String = "http://linkToConfigFile"; 
     xmlLoader.addEventListener(Event.COMPLETE, xmlConfigLoadingSuccessed); 
     xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, xmlConfigLoadingFailed); 
     xmlLoader.load(new URLRequest(load_config_path)); 
    } 

    private function xmlConfigLoadingSuccessed(event:Event):void 
    { 
     var load_config:XML = new XML(event.target.data); 
     var listOfProperties:XMLList = load_config.elements("dev"); 
     var listOfElements:XMLList = listOfProperties[0].elements(); 
     this.f_vars = new Object(); 

     for each (var xmlObj:XML in listOfElements) 
     { 
      this.f_vars[xmlObj.name()] = xmlObj.valueOf(); 
      trace(this.f_vars[xmlObj.name()]); 
     } 

     //startup facade 

    }