Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   чтение xml (http://www.flasher.ru/forum/showthread.php?t=141505)

KirAmp 26.06.2010 19:12

чтение xml
 
Уважаемые флешеры, столкнулся с проблемой.
Я стал писать приложение для ВКонтакте и на выходе ихнее API дает xml файл вида:
Код:

<?xml version="1.0" encoding="utf-8"?>
<response list="true">
 <uid>4126</uid>
 <uid>481</uid>
 <uid>1843</uid>
 <uid>3829</uid>
</response>

Вопрос таков: как все id запихнуть в один массив (прочитать и запихнуть)

Спасибо за внимание!

ShockWave512 26.06.2010 21:08

хмл класс позволяет трактовать ноды как элементы массива

Код AS3:

 public function XmlExample() {
            var employees:XML =
                <employees>
                    <employee ssn="123-123-1234">
                        <name first="John" last="Doe"/>
                        <address>
                            <street>11 Main St.</street>
                            <city>San Francisco</city>
                            <state>CA</state>
                            <zip>98765</zip>
                        </address>
                    </employee>
                    <employee ssn="789-789-7890">
                        <name first="Mary" last="Roe"/>
                        <address>
                            <street>99 Broad St.</street>
                            <city>Newton</city>
                            <state>MA</state>
                            <zip>01234</zip>
                        </address>
                    </employee>
                </employees>;
 
            trace(employees.employee[0].address.zip)// 98765
 
            trace(employees.employee[1].@ssn);          // 789-789-7890
 
            trace(employees..zip[0]);                  // 98765
 
            trace(employees..@ssn[1]);                  // 789-789-7890


KirAmp 26.06.2010 21:28

ShockWave512 Огромное спасибо. Жаль что на АС3, но для тестов хватит

sniper007 26.06.2010 23:51

KirAmp, не поленись, скачай любую книжку по AS2. там много интересного есть =)

in4core 27.06.2010 00:42

""Жаль что на АС3, но для тестов хватит"" - это на АС2

KirAmp 27.06.2010 14:28

in4core
1) public function
2) Непомню, чтобы в АС2 можно было бы вбивать хмл таким образом
3) Так же автор написал в теге [AS3.]

dark256 27.06.2010 14:36

Ну вот тупо парсер ответов контакта кидаю. Все неоптимально и некрасиво, но ряд моментов по работе с XML конструктивами применительно к контактовским ответам есть.

_level0.LDP - клип с прогресс-баром загрузчика. Там есть текстовое поле stat

Код AS1/AS2:

        static function doParse(SV:String, field:String)                // Парсер ответов Контакта
        {               
                var xml_str:String = SV
                var my_xml:XML = new XML()
                my_xml.ignoreWhite = true
                my_xml.parseXML(xml_str)
                var node = my_xml.firstChild       
 
                if ( ( node.attributes.list != undefined && node.attributes.list != "true" ) || node.nodeName == "error" )
                {
                        _level0.LDP.stat.text = "API OPERATION ERROR: "+field;
                }
                else
                {
                        _level0.LDP._visible = false
                }
 
                var users:Array = new Array()
                var friends:Array = new Array()
                var aDDS:Array = new Array()
 
                for (var i=0; i<node.childNodes.length; i++)
                {
                        if (node.childNodes[i].nodeName=="user")                // Распарсивание ответа ЮзерПрофиль
                        {
                                var user = users[users.length] = new Object()
 
                                for (var j=0; j<node.childNodes[i].childNodes.length; j++)
                                {
                                        var xnode = node.childNodes[i].childNodes[j]
                                        user[xnode.nodeName] = xnode.firstChild.nodeValue                                       
                                }                       
 
                                var tmpNick = user.nickname
                                if ( tmpNick == undefined || tmpNick =="" )
                                {
                                        user.nickname = user.first_name +" "+user.last_name                               
                                }
 
 
                        }
 
                        if ( node.childNodes[i].nodeName=="balance")        // Баланс приложения
                        {
                                var appBalance = node.childNodes[i].firstChild.nodeValue
                        }
 
                        if (node.childNodes[i].nodeName=="uid")                // Распарсивание ответа друззя прилажения
                        {
                                friends[friends.length] = node.childNodes[i].firstChild.nodeValue               
                        }
 
                        if (node.childNodes[i].nodeName=="ad")                        // Распарсивание ответа РЕКЛАМНЫЙ МОДУЛЬ
                        {
                                var addModule = aDDS[aDDS.length] = new Object()
 
                                for (var j=0; j<node.childNodes[i].childNodes.length; j++)
                                {
                                        var xnode = node.childNodes[i].childNodes[j]
                                        addModule[xnode.nodeName] = xnode.firstChild.nodeValue                                       
                                }                                       
 
                        }                       
                }
 
 
                switch ( field )
                {
 
                case "user":                        // --------- parse user profile section
                        return users
                break;       
                case "balance":                        // --------- parse user profile section
                        return appBalance
                break;       
                case "uid":                                // --------- parse user profile section
                        return friends
                break;
                case "ad":                                // --------- parse user profile section
                        return aDDS
                break;               
 
                default :
                        trace("VKParser: Invalid Field")
                        return "VKParser_Field_Erorr"
                break;       
                }
 
        }


KirAmp 27.06.2010 15:09

Спасибо! Буду разбираться:rolleyes::wacko:


Часовой пояс GMT +4, время: 05:40.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.