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

KiL33 07.01.2009 13:17

Как автоматом собрать xml базу
 
Вложений: 1
Допустим, есть два раздела ‘Доски’ и ‘Гвозди’. Есть одна организация, которая производит доски и гвозди.
И сам вопрос, как эту организацию поместить в два раздела автоматом?
Само собой в одном из разделов эта организация будет прописана, а другие разделы, относящиеся к этой организации должны автоматом ее прописать.
Код:

<node>

<node label="Доски">
<node label="организация" meta="доски, гвозди" url=""/>
</node>
<node label="Гвозди">
<node label=""/>
<!-- здесь должна быть таже организация что и в разделе 'Доски'--></node>

</node>

Предполагаю, что это можно сделать, используя все те же метки, но как заставить разделы подхватывать организации по меткам непонятно.

Может это просто не реально сделать…
В примере только компонент Tree дергающий xml.

alexcon314 07.01.2009 14:05

вы хотите выборки из xml делать что ли? типа есть tree с нодами "гвозди", "доски", "колбаса". при клике на ноду в ней раскрываются организации хоть как-то производящие данный продукт.

Mnilionic 07.01.2009 15:41

либо тупо делать копии узлов в нужные категории,
либо создавать что-то типа индексации (либо в разных документах либо в одном)


Код:

<node>
<company>
        <node id="1" label="организация" meta="доски, гвозди" url=""/>
        <node id="2" label="организация" meta="доски" url=""/>
        <node id="3" label="организация" meta="колбаса" url=""/>
</company>
<category>
        <node label="Доски">
                <node cid="1"/>
                <node cid="2"/>
        </node>
        <node label="Колбаса">
                <node cid="3"/>
        </node>
        <node label="Гвозди">
                <node cid="1"/>
        </node>
</category>
</node>

соответствеено xml для tree придётся на лету варганить

KiL33 07.01.2009 15:53

Цитата:

при клике на ноду в ней раскрываются организации хоть как-то производящие данный продукт.
Именно так:)
Цитата:

соответствеено xml для tree придётся на лету варганить
Это как?

gloomyBrain 07.01.2009 23:43

Зачем Вам все эти чудеса?
Сделайте 2 XML файлика

KiL33 08.01.2009 11:00

Цитата:

Сообщение от gloomyBrain (Сообщение 788829)
Сделайте 2 XML файлика

Это как минимум не рационально.)
Видите ли, организаций более 5тс. и думается, что их будет только больше и больше, и создавать лишние xml совсем не желательно и уж тем более вручную вбивать организации в разделы.
Не совсем понятен пример от Mnilionic в принципе приходится так же вбивать организации только теперь по id))

alexcon314 08.01.2009 13:07

Что можно попробовать:
иметь один хмл, где просто описан линейно список организаций с аттрибутом meta = "гвозди" ну или "доски" либо и то и другое.
при клике на ноду "доски" нужно пробегать весь этот список, ища ноды в нем, у которых в мета есть "доски" и делать addChildNode этого узла к узлу "доски" в tree.dataProvider. это и будет сборка "на лету".
чтобы каждый раз не пробегаться по всему списку, можно придумать, точнее продумать, систему индексации записей этого списка, и искать не в списке, а в индексах. Но в этом случае придется изменить механизм добавления организаций в список, т.е. нужно при добавлении в список менять и индексную информацию. Однако, и в простом случае без индексации вы все равно вынуждены вписывать руками, что организация делает то-то и то-то. Это можно трактовать как тривиальный случай индексации.
Индексную информацию можно хранить либо в том же файле, вместе со списком, либо в отдельном файле (файлах).
PS. А что, заюзать обычную sql-базу невозможно?

Mnilionic 08.01.2009 14:42

Цитата:

Это как минимум не рационально... Видите ли, организаций более 5тс.
как минимум не рационально использовать для этого дела файл XML =)

Я вам предложил, почти то что подробно расписал alexcon314:
* линейный список компаний
* линейный список категорий
* в категориях индексный список по id компаний удовлетворяющих категории.

Изначально в tree показываете список категорий. при выборе категорий получаем её индексы и хватаем по id необходимые компании.

Так как во флеш нету getElementById(), то выкручиваемся так:
При загрузки пробегаемся по всему списку компаний и создаём ассациативный массив с id компании, в качестве ключей, и ссылкой ну узел, в качестве значения.

Ну и помимо добавления новый коспании нужно будет добавлять её индекс в необходимые категории
,за неимением базы и админки, в ручную =).

но всё же посмотрите в сторону человекской sql базы!

KiL33 09.01.2009 09:17

Нет ну конечно в большей степени не рационально использовать в моем случае xml, но а какими еще средствами локально я могу получить данные. Если локально использовать sql, видимо нужно будет устанавливать дополнительных клиентов для обработки данных. А это лишние мегабайты. Если я в чем-то не прав поправьте.
Может быть попробовать заюзать Access Database, но с этим так я вообще дел никаких не имел.

P.S. В проектике использую Zinc, может быть, используя его возможности можно что-нибудь выдумать))

P.P.S. Автоматизации никакой, может и не браться за это дело, с другой стороны если ради опыта, то почему бы и нет.)

alexcon314 09.01.2009 12:35

Класс mdm.Database.MSAccess. Для работы вам потребуется только файл самой базы .mdb, ничего дополнительно устанавливать не надо, насколько мне известно. Для вашей задачи нужно составить sql-запрос типа

Код:

mdm.Database.MSAccess.select("SELECT * FROM myTable WHERE meta='гвозди'");
var dataSet:Array = mdm.Database.MSAccess.getData();

и аккуратно разложить ответ-массив по нодам. Кроме этого, есть mdm.Database.ADO, правда с ним малость посложнее.
Ну или развивайте интеллект, юзая xml.


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

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