Russian Qt Forum

Qt => XML => Тема начата: izoomer от Октябрь 17, 2007, 13:19



Название: [qt-4.2.0 Linux] QDomDocument и создание второго екземпляра документа
Отправлено: izoomer от Октябрь 17, 2007, 13:19
Есть QDomDocument требуется создать аналогичный но за исключением некоторых тегов ... то есть из большого документа создать другой документ QDomdocument с выборочными тегами ... как такое сделать ?


Название: Re: [qt-4.2.0 Linux] QDomDocument и создание второго екземпляра документа
Отправлено: Kainit от Октябрь 17, 2007, 14:28
QDomDocument source;
QDomDocument target = source;

а дальше, обходим дерево и removeChild() на ненужных узлах...

Думается, самый простой способ


Название: Re: [qt-4.2.0 Linux] QDomDocument и создание второго екземпляра документа
Отправлено: izoomer от Октябрь 17, 2007, 14:32
QDomDocument source;
QDomDocument target = source;

а дальше, обходим дерево и removeChild() на ненужных узлах...

Думается, самый простой способ

простой, но когда итемов в исходном 150-200 , а надо 10-25 то уже как то изыбточно удалять лишние итемы.


Название: Re: [qt-4.2.0 Linux] QDomDocument и создание второго екземпляра документа
Отправлено: pastor от Октябрь 17, 2007, 14:36
Небольшая поправка:

Код:
QDomDocument source;
QDomDocument target = source.cloneNode();

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

Цитировать
The data of the copy is shared (shallow copy): modifying one node will also change the other.


Название: Re: [qt-4.2.0 Linux] QDomDocument и создание второго екземпляра документа
Отправлено: Kainit от Октябрь 17, 2007, 14:54
Цитировать
Небольшая поправка:
Небольшая, но ценная!

Цитировать
простой, но когда итемов в исходном 150-200 , а надо 10-25 то уже как то изыбточно удалять лишние итемы.
Второй способ - от обратного, делай пустой Target и обходя дерево заполняй его, добавляя те саме 10-25 нужных узлов...
Тут ничего не придумаешь при всём желании, разве что генетический алгоритм напишешь, который будет из каких-нибудь хитрых соображений формировать область памяти...


Название: Re: [qt-4.2.0 Linux] QDomDocument и создание второго екземпляра документа
Отправлено: Lion от Январь 04, 2008, 12:38
Небольшая поправка:

Код:
QDomDocument source;
QDomDocument target = source.cloneNode();

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

Еще поправка
Код:
QDomDocument source;
QDomDocument target = source.cloneNode(true);
В противном случае не скопируются дочерние элементы.