Сценарий действия 3 для чтения значений из файла XML - PullRequest
2 голосов
/ 13 сентября 2011

У меня проблема при чтении из XML-файла в скрипте действия 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
 library.@url

Спасибо!

Ответы [ 2 ]

3 голосов
/ 13 сентября 2011

При использовании класса XML вы не ссылаетесь на корневой узел в вашем случае "config"

// 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
 library.@url

символ @ используется для доступа к атрибутам.

<library id=123 >

Почему вы все равно помещаете свой файл конфигурации в xml?Этот тип вещей я создаю файл конфигурации / класса / Singleton для.

1 голос
/ 13 сентября 2011

Вот мое решение для этого, Мэйби, это поможет кому-нибудь позже:

    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

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...