Russian Qt Forum

Qt => XML => Тема начата: Гурман от Июль 26, 2011, 20:21



Название: Надо сохранить некую сеть в XML
Отправлено: Гурман от Июль 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 быстрее получится, но я понятия не имею, насколько оно будет эффективно в моем случае



Название: Re: Надо сохранить некую сеть в XML
Отправлено: Странник от Июль 26, 2011, 20:54
SAX хорош для обработки потоковых данных или больших XML-документов. для своей задачи можете использовать DOM с чистой совестью. для изучения посмотрите документацию и примеры, этого вполне достаточно.


Название: Re: Надо сохранить некую сеть в XML
Отправлено: Гурман от Июль 27, 2011, 00:06
да, сохранение сети получилось с полпинка, всего 44 строки, с загрузкой немного сложнее, завтра сделаю


Название: Re: Надо сохранить некую сеть в XML
Отправлено: Fregloin от Август 08, 2011, 08:58
я храню нечто подобное тоже в XML с помощью DOM (после tinyxml очень легко освоить нежели SAX), на сцене порядка тысячи итемов, и связываю их по id (при загрузке хиширую, потом по id связываю указатели друг на друга) - памяти особо не жрет, работает на удивление быстро.