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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: удаление нодов xml  (Прочитано 4516 раз)
stasuss
Гость
« : Июнь 26, 2012, 09:43 »

Всем привет.

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

имеется файлик типа такой:
Код:
<parent>
  <child>text</child>
  ... много их
  <child>text</child>
</parent>

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

не буду приводить полный код ибо он вполне нормальный, приведу код удаления

Код:
parc=parc.parentNode().removeChild(parc).toElement();

а ну и еще перебор детишек у меня происходит с помощью такого for:

Код:
for (QDomElement parc=block.firstChildElement("Parcels").firstChild().toElement(); !parc.isNull(); parc=parc.nextSibling().toElement())

не смотрите на то что это подразумевает что файл выглядит не так как я его описал) смысл в этом

таким образом я имею то что при удалении что то происходит с указателем на текущую ноду и цикл вылетает.. а вот что происходит не пойму, поидее функция удаления ноды должна возвращать указатель на предыдущую ноду...

кто нибудь сталкивался?
Записан
Serr500
Гость
« Ответ #1 : Июнь 26, 2012, 09:49 »

поидее функция удаления ноды должна возвращать указатель на предыдущую ноду...

Цитировать
QDomNode QDomNode::removeChild ( const QDomNode & oldChild )
Removes oldChild from the list of children. oldChild must be a direct child of this node.

Returns a new reference to oldChild on success or a null node on failure.
Про предыдущую сказано тут где? Новую ссылку на неё же саму метод этот возвращает.
Записан
stasuss
Гость
« Ответ #2 : Июнь 26, 2012, 09:52 »

тогда я чего то не понимаю... что значит новую ссылку на ее же саму, если ее удалили?
а как мне тогда цикл продолжить с текущей позиции? гуру qt xml помогите(
Записан
mutineer
Гость
« Ответ #3 : Июнь 26, 2012, 10:10 »

тогда я чего то не понимаю... что значит новую ссылку на ее же саму, если ее удалили?
а как мне тогда цикл продолжить с текущей позиции? гуру qt xml помогите(

Удалили ноду из дерева, но сама нода все еще жива, хоть и живет вне старого дерева. Вот на эту оторванную ноду тебе ссылку и возвращают
Записан
stasuss
Гость
« Ответ #4 : Июнь 26, 2012, 10:12 »

а как все таки цикл продолжить? создать копию текущей ноды перед удалением и вызвать метод previousSibling()?
Записан
mutineer
Гость
« Ответ #5 : Июнь 26, 2012, 10:28 »

Решение в лоб - в цикле ноды не удаляешь, а собираешь в контейнер ссылки на них. А потом вне цикла все накопившиеся удаляешь
Записан
stasuss
Гость
« Ответ #6 : Июнь 26, 2012, 10:31 »

блин. ну об этом я тоже думал) а в цикле что никак?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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