Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Помогите разобрать XML (http://www.flasher.ru/forum/showthread.php?t=137619)

TopIce 18.03.2010 10:52

Помогите разобрать XML
 
Сейчас разбираю ответы от АПИ

Код:

<restResponse object="user" method="getInfoAction">
<id>12313546</id>
<fullName>Василий Пупкин</fullName>
<nick>Vasyok</nick>
<isOnline>yes</isOnline>
<type>student</type>
<smallAvatar>http://scribbler.ru/uploaded/avatar/user/12313546/small.jpg</smallAvatar>
<mediumAvatar>http://scribbler.ru/uploaded/avatar/user/12313546/medium.jpg</mediumAvatar>
<userPic>http://scribbler.ru/uploaded/avatar/user/12313546/big.jpg</userPic>
</restResponse>

следующим образом

Код AS3:

      trace(service.lastResult.restResponse)
      trace(service.lastResult.restResponse.id)
      trace(service.lastResult.restResponse.userPic)
      trace(service.lastResult.restResponse.fullName)
      trace(service.lastResult.restResponse.nick)
      trace(service.lastResult.restResponse.isOnline)
      trace(service.lastResult.restResponse.type)

А дальше например вот так:

Код AS3:

      img1.source=service.lastResult.restResponse.userPic
      fullName1.text=service.lastResult.restResponse.fullName

Но что делать если приходит многоуровневый ответ?

Код:

Ответ:
<restResponse object="photo" method="getInbox">

    <item index="0">
        <id>232</id>
        <title>Альбом1</title>
        <description>описание альбома 1</description>
        <createdOn>2009-08-11 15:23:03</createdOn>
        <updatedOn>2009-08-11 15:23:03</updatedOn>
        <cover>http://scribbler.ru/uploaded/photo/1/2.jpg</cover>
        <photosCount>10</photosCount>
    </item>

    <item index="1">
        <id>233</id>
        <title>Альбом2</title>
        <description>описание альбома 2</description>
        <createdOn>2009-08-11 15:23:03</createdOn>
        <updatedOn>2009-08-11 15:23:03</updatedOn>
        <cover>http://scribbler.ru/uploaded/photo/1/45.jpg</cover>
        <photosCount>45</photosCount>
    </item>

...

</restResponse>

причем количество альбомов заранее не известно

СлаваRa 18.03.2010 11:15

for each - например

TopIce 18.03.2010 11:18

я в первый раз flex включил 5 дней назад, можно подробнее?

СлаваRa 18.03.2010 11:47

как вариант:
сделайте массив, items например, для хранения данных из <restResponse />.
по полученному XML пройдитесь циклом и все что в <item></item> сохраняйте в массив, а потом у Вас будет
Код AS3:

items[номер альбома].то что надо выдернуть из полученных данных


TopIce 18.03.2010 12:03

За подсказку большое спасибо, но я совсем не в теме по этому языку.

- как создать массив
- как выглядит код цикла
- как в цикле отделять один <item> от другого
- как определить что данный <item> был последним и цикл надо прекратить

Партизан 18.03.2010 12:07

Код AS3:

var xml:XML = <restResponse object="photo" method="getInbox">
                        <item index="0">
                                <id>232</id>
                                <title>Альбом1</title>
                                <description>описание альбома 1</description>
                                <createdOn>2009-08-11 15:23:03</createdOn>
                                <updatedOn>2009-08-11 15:23:03</updatedOn>
                                <cover>http://scribbler.ru/uploaded/photo/1/2.jpg</cover>
                                <photosCount>10</photosCount>
                        </item>
 
                        <item index="1">
                                <id>233</id>
                                <title>Альбом2</title>
                                <description>описание альбома 2</description>
                                <createdOn>2009-08-11 15:23:03</createdOn>
                                <updatedOn>2009-08-11 15:23:03</updatedOn>
                                <cover>http://scribbler.ru/uploaded/photo/1/45.jpg</cover>
                                <photosCount>45</photosCount>
                                </item>       
                        </restResponse>;
 
trace("Количество item:", (xml.item as XMLList).length())
                        for each(var j:XML in xml.item) {
                                trace("\n",j.name(),j.childIndex());
                                for each(var i:XML in j.*) {                                       
                                        trace("\t",i.name(),":",i)                                                       
                                }
                        }

---
Вот еще прочтите по XML

СлаваRa 18.03.2010 12:07

Код AS3:

var items:/*XML*/Array = [];
for each(var item:XML in data.item)//где data - это ваш XML
{
 items.push(item);
}


Aloran 18.03.2010 12:11

http://help.adobe.com/ru_RU/AS3LCR/F...0.0/index.html
http://help.adobe.com/ru_RU/ActionSc...0204-7fdc.html
это вам в помощь

П.С.: Не серьезный подход какойто. Сначало литературу читают люди, делают "Hello World!!!", и изучают основные типы и т.д., а уж если что посложнее на форум бегут...

TopIce 18.03.2010 12:14

Другое именно так и учил, по чу-чуть, шагами по учебнику.
а тут просто время поджимает. совсем совсем жмет.

Всем огромное спасибо за помощь


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

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