PDA

Просмотр полной версии : Операции с xml


gregos
31.07.2008, 14:31
Привет...Кто знает решение - помогите пожалуйста...Есть 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
Ну и заноси атрибуты каждого блакнота в массив затем сравнение делай и все...

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

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

gregos
31.07.2008, 17:10
Тогда иди в раздел вакансии.
Общая схема береш свой 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
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: