crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Получить QDomNode из xml по имени
RazrFalcon
  опции профиля:
сообщение 3.10.2011, 11:53
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


...
<example name="example text"/>
...
В XML куча вложений и элементов. Как найти элемент example, кроме как через рекурсивную функцию?
То есть найти его, где бы в xml он не находился.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
RazrFalcon
  опции профиля:
сообщение 3.10.2011, 12:19
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Сделал так. Работает.
...
findNode(name,mainNode.firstChild());
qDebug()<<findedNode.toElement().tagName(); // findedNode - глобальная переменная QDomNode findedNode;
...

void GuiInfo::findNode(const QString &name, const QDomNode &node)
{
  if (node.hasChildNodes()) {
    QDomNodeList tempNodeList = node.childNodes();
    for (int i = 0; i<tempNodeList.count(); ++i) {
      if (tempNodeList.at(i).toElement().tagName().contains(name))
        findedNode = tempNodeList.at(i); // когда я получу значение, нужно убить циклы все, как?
      else if (tempNodeList.at(i).hasChildNodes())
        findNode(name,tempNodeList.at(i));
    }
  }
}

Разве что не пойму, как остановить эту рекурсивную функцию.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- RazrFalcon   Получить QDomNode из xml по имени   3.10.2011, 11:53
- - Алексей1153   можно попробовать открыть файл как текст и найти с...   3.10.2011, 11:55
- - RazrFalcon   Нее... нужен именно QDomNode, так как потом мне ну...   3.10.2011, 12:01
- - Алексей1153   если структура XML не меняется, либо меняется по т...   3.10.2011, 12:13
- - RazrFalcon   Сделал так. Работает. ... findNode(name,mainNo...   3.10.2011, 12:19
- - Алексей1153   как-нибудь так const QDomNode node GuiInfo:...   3.10.2011, 12:37
- - RazrFalcon   const QDomNode node GuiInfo::findNodeА мож...   3.10.2011, 12:44
- - Алексей1153   "node" - это очепятка вкралась. В блокно...   3.10.2011, 12:49
- - RazrFalcon   Ааа! Все понял. Про "return QDomNode();...   3.10.2011, 13:11
- - Алексей1153   в отладчике гляди, где неправильно дело идёт   3.10.2011, 13:12
- - RazrFalcon   Оно создает 2-а GuiInfo::findNode, и ретурн убивае...   3.10.2011, 13:22
- - Алексей1153   made in the Notepad )) попробуй //рекурсивный по...   3.10.2011, 13:38
- - RazrFalcon   Рабочий вариант: //ищем GuiInfo::F1(...   3.10.2011, 13:55
- - Алексей1153   RazrFalcon, в твоём варианте, в отличие от моего, ...   3.10.2011, 14:05
- - RazrFalcon   У меня все нашло. И с детьми и без.   3.10.2011, 14:09
- - Алексей1153   ну, нашлось, так нашлось.   3.10.2011, 14:11
- - DOGG   Может подойдет метод QDomNodeList QDomDocument::el...   3.10.2011, 17:03
- - RazrFalcon   Капец! Работает. Сократил код в 100500 раз. С...   3.10.2011, 17:30
- - DOGG   Пожалуйста!   3.10.2011, 17:46


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 2:04