Форум 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=114512)

gregos 31.07.2008 14:31

Операции с xml
 
Привет...Кто знает решение - помогите пожалуйста...Есть xml с названиями магазинов определенного города...У магазинов есть координаты(X и Y)...нужно узнать магазины с одинаковыми координатами(и X и Y) и занести их в соответствующие массивым для последующего отображения...Пример xml:

Код:

<map>
        <settings>
                <map_name link="lugansk">Луганск</map_name>
        </settings>
        <selected link="23"/>
        <locations>
                <location name="Фокстрот" shop_id="41" link="fokstrot" x="80" y="50" radius="2" icons="btech" fill_color="0x00000" fill_alpha="100" line_color="0xfffffff" line_alpha="100" line_width="1"/>
                <location name="Комфи" shop_id="45" link="comfy" x="100" y="-20" radius="1" icons="elfoto" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/>
                <location name="СРТ" shop_id="46" link="srt" x="450" y="25" radius="1" icons="сomp" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/>
                <location name="Артцентр" shop_id="12" link="artcentr" x="-120" y="-80" radius="1" icons="office" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/>
                <location name="Евразия" shop_id="11" link="evrasia" x="48" y="-150" radius="1" icons="auto" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/>
                <location name='ТЦ "Мир"' shop_id="11" link="mir" x="48" y="-150" radius="1" icons="sport" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/>
        </locations>
</map>


qazwsx 31.07.2008 16:16

Ну и заноси атрибуты каждого блакнота в массив затем сравнение делай и все...

gregos 31.07.2008 16:39

Цитата:

Сообщение от qazwsx (Сообщение 755553)
Ну и заноси атрибуты каждого блакнота в массив затем сравнение делай и все...

непонятна стадия сравнения...:confused:хотелось бы увидеть рабочий код ...

qazwsx 31.07.2008 16:52

Тогда иди в раздел вакансии.
Общая схема береш свой XML. Считываеш каждую строку location в XML это называется node, береш атрибуты node. Это уже готовый обьект со всеми его параметрами attributes. Ззаносиш их куда хочеш(обьекты) можеш в массив можеш еше куда небудь... И делаеш сравнеие координат. Ну или же как то еше в таком же духе...

gregos 31.07.2008 17:10

Цитата:

Сообщение от qazwsx (Сообщение 755564)
Тогда иди в раздел вакансии.
Общая схема береш свой XML. Считываеш каждую строку location в XML это называется node, береш атрибуты node. Это уже готовый обьект со всеми его параметрами attributes. Ззаносиш их куда хочеш(обьекты) можеш в массив можеш еше куда небудь... И делаеш сравнеие координат. Ну или же как то еше в таком же духе...

Массив с объектами уже есть...сделал отображение магазинов...это есть...теперь в месте "скопления" этих магазинов нужно вывести список...вопрос - как сделать сравнение...?большая часть работы уже сделана, зачем же в вакансии...:)

iNils 31.07.2008 17:14

Код:

var xml:XML = new XML ('<map><settings><map_name link="lugansk">Луганск</map_name></settings><selected link="23"/><locations><location name="Фокстрот" shop_id="41" link="fokstrot" x="80" y="50" radius="2" icons="btech" fill_color="0x00000" fill_alpha="100" line_color="0xfffffff" line_alpha="100" line_width="1"/><location name="Комфи" shop_id="45" link="comfy" x="100" y="-20" radius="1" icons="elfoto" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/><location name="СРТ" shop_id="46" link="srt" x="450" y="25" radius="1" icons="сomp" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/><location name="Артцентр" shop_id="12" link="artcentr" x="-120" y="-80" radius="1" icons="office" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/><location name="Евразия" shop_id="11" link="evrasia" x="48" y="-150" radius="1" icons="auto" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/><location name="ТЦ Мир" shop_id="11" link="mir" x="48" y="-150" radius="1" icons="sport" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/></locations></map>');
var arrayShop:Array = new Array ();
function findShop (node:XMLNode) {
        var array:Array = new Array ();
        var arrayCoor:Array = new Array ();
        var arrayOut:Array = new Array ();
        var len:Number = node.childNodes.length;
        for (var i:Number = 0; i < len; i++) {
                var nodeA:XMLNode = node.childNodes[i];
                var x:Number = Number (nodeA.attributes.x);
                var y:Number = Number (nodeA.attributes.y);
                if (!array[x]) {
                        array[x] = [];
                }
                if (!array[x][y]) {
                        array[x][y] = [];
                        arrayCoor.push ({x:x, y:y});
                }
                array[x][y].push (i);
        }
        len = arrayCoor.length;
        for (var i:Number = 0; i < len; i++) {
                var x:Number = arrayCoor[i].x;
                var y:Number = arrayCoor[i].y;
                arrayOut.push (array[x][y]);
        }
        return arrayOut;
}
var arrayNodeOfShop = findShop (xml.firstChild.lastChild);
trace (arrayNodeOfShop.join ("\n"));


gregos 31.07.2008 17:23

Цитата:

Сообщение от iNils (Сообщение 755578)
Код:

var xml:XML = new XML ('<map><settings><map_name link="lugansk">Луганск</map_name></settings><selected link="23"/><locations><location name="Фокстрот" shop_id="41" link="fokstrot" x="80" y="50" radius="2" icons="btech" fill_color="0x00000" fill_alpha="100" line_color="0xfffffff" line_alpha="100" line_width="1"/><location name="Комфи" shop_id="45" link="comfy" x="100" y="-20" radius="1" icons="elfoto" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/><location name="СРТ" shop_id="46" link="srt" x="450" y="25" radius="1" icons="сomp" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/><location name="Артцентр" shop_id="12" link="artcentr" x="-120" y="-80" radius="1" icons="office" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/><location name="Евразия" shop_id="11" link="evrasia" x="48" y="-150" radius="1" icons="auto" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/><location name="ТЦ Мир" shop_id="11" link="mir" x="48" y="-150" radius="1" icons="sport" fill_color="0x00000" fill_alpha="100" line_color="0x00000" line_alpha="100" line_width="1"/></locations></map>');
var arrayShop:Array = new Array ();
function findShop (node:XMLNode) {
        var array:Array = new Array ();
        var arrayCoor:Array = new Array ();
        var arrayOut:Array = new Array ();
        var len:Number = node.childNodes.length;
        for (var i:Number = 0; i < len; i++) {
                var nodeA:XMLNode = node.childNodes[i];
                var x:Number = Number (nodeA.attributes.x);
                var y:Number = Number (nodeA.attributes.y);
                if (!array[x]) {
                        array[x] = [];
                }
                if (!array[x][y]) {
                        array[x][y] = [];
                        arrayCoor.push ({x:x, y:y});
                }
                array[x][y].push (i);
        }
        len = arrayCoor.length;
        for (var i:Number = 0; i < len; i++) {
                var x:Number = arrayCoor[i].x;
                var y:Number = arrayCoor[i].y;
                arrayOut.push (array[x][y]);
        }
        return arrayOut;
}
var arrayNodeOfShop = findShop (xml.firstChild.lastChild);
trace (arrayNodeOfShop.join ("\n"));



Спасибо огромное...щас буду разбираться...:drinks:


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

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