Russian Qt Forum
Май 18, 2024, 01:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Надо сохранить некую сеть в XML  (Прочитано 3761 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Июль 26, 2011, 20:21 »

Есть некая сеть объектов, которые неким образом связаны друг с другом (связи находятся в специальном реестре, и представляют собой информацию о соединениях сигнал-слот между ку-объектами). Изображения объектов накиданы на ку-графическую сцену, и там же соединения представлены айтемами-линиями. Нужно все это хозяйство уметь сохранять в XML и загружать обратно. То есть, надо для каждого объекта сохранить примерно следующее:

Код:
имя объекта1
    имя сигнала1 объекта1
         имя другого объекта и имя его слота, к которому подключен сигнал1
         имя еще объекта и имя его слота, к которому подключен сигнал1
    имя сигнала2 объекта1
         имя другого объекта и имя его слота, к которому подключен сигнал2
имя объекта2
    имя сигнала1 объекта2
         имя другого объекта и имя его слота, к которому подключен сигнал1
... и т.д.

1-ая проблема - с XML я пока в Qt не работал, примерно представляю, что это, но практики создания и чтения XML документов никакой, только правил настройки некоторых систем в этом формате
2-я проблема - не знаю, где лучше изучить, как работать с этим в Qt, несколько страниц в Шлее я прочел, в принципе, по ним можно уже что-то слепить, но по опыту знаю, что если лепить по Шлее, то получится не эффективно, при должном понимании можно сделать лучше

поэтому вопросы
 - где лучше всего прочитать про использование XML в Qt?
 - стоит ли связываться с DOM? такая ли она прожорливая, как пишет Шлее? оправдано ли её использование, и будет ли она сильно пожирать память, если реальные схему будут иметь всего несколько десятков айтемов? замечу, что в другой части проектра рисуется сцена, на которой сотни тысяч айтемов - и ничего, ну 20 мегабайт она занимает, это не смертельно, но если я сделаю простейший код (типа того, что у Шлее), и он выльется в мегабайты бинарника, и для десятка айтемов будет требовать десяток мегабайт RAM, то ну его нафик
 - или лучше сделать на SAX? но по шлее не понятно, есть ли простой способ создавать XML документы, кроме как с помощью DOM

в общем, знатокам этого дела, просьба по описанной выше задаче наставить меня на путь истинный, чтобы я потратил минимум времени на изучение и реализацию, ибо оно дорого, желательно все сделать с нуля за 1 день - по Шлее видно, что с DOM быстрее получится, но я понятия не имею, насколько оно будет эффективно в моем случае

« Последнее редактирование: Июль 26, 2011, 20:31 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Странник
Гость
« Ответ #1 : Июль 26, 2011, 20:54 »

SAX хорош для обработки потоковых данных или больших XML-документов. для своей задачи можете использовать DOM с чистой совестью. для изучения посмотрите документацию и примеры, этого вполне достаточно.
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #2 : Июль 27, 2011, 00:06 »

да, сохранение сети получилось с полпинка, всего 44 строки, с загрузкой немного сложнее, завтра сделаю
Записан

2^7-1 == 127, задумайтесь...
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Август 08, 2011, 08:58 »

я храню нечто подобное тоже в XML с помощью DOM (после tinyxml очень легко освоить нежели SAX), на сцене порядка тысячи итемов, и связываю их по id (при загрузке хиширую, потом по id связываю указатели друг на друга) - памяти особо не жрет, работает на удивление быстро.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.