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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [qt-4.2.0 Linux] QDomDocument и создание второго екземпляра документа  (Прочитано 6269 раз)
izoomer
Гость
« : Октябрь 17, 2007, 13:19 »

Есть QDomDocument требуется создать аналогичный но за исключением некоторых тегов ... то есть из большого документа создать другой документ QDomdocument с выборочными тегами ... как такое сделать ?
Записан
Kainit
Гость
« Ответ #1 : Октябрь 17, 2007, 14:28 »

QDomDocument source;
QDomDocument target = source;

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

Думается, самый простой способ
Записан
izoomer
Гость
« Ответ #2 : Октябрь 17, 2007, 14:32 »

QDomDocument source;
QDomDocument target = source;

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

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

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

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Октябрь 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.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Kainit
Гость
« Ответ #4 : Октябрь 17, 2007, 14:54 »

Цитировать
Небольшая поправка:
Небольшая, но ценная!

Цитировать
простой, но когда итемов в исходном 150-200 , а надо 10-25 то уже как то изыбточно удалять лишние итемы.
Второй способ - от обратного, делай пустой Target и обходя дерево заполняй его, добавляя те саме 10-25 нужных узлов...
Тут ничего не придумаешь при всём желании, разве что генетический алгоритм напишешь, который будет из каких-нибудь хитрых соображений формировать область памяти...
Записан
Lion
Гость
« Ответ #5 : Январь 04, 2008, 12:38 »

Небольшая поправка:

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

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

Еще поправка
Код:
QDomDocument source;
QDomDocument target = source.cloneNode(true);
В противном случае не скопируются дочерние элементы.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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