crossplatform.ru

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

> Xml - обращение к дочернему элементу
FladeX
  опции профиля:
сообщение 27.3.2009, 12:18
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 20.2.2009
Пользователь №: 564

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




Репутация:   0  


Структура xml:
<help>
    <page id="page01">
        <title>title of page01</title>
        <message>text</message>
    </page>
    ...
    <page id="page99">
        <title>title of page99</title>
        <message>text</message>
    </page>
</help>

Нужно по id найти в нем <page>, а затем получить оттуда содержимое <message>. Пытался делать например так:
    QDomElement docElem;
    docElem = doc.elementById("page01");
        QDomNodeList lstNodes(docElem.childNodes()));
        for (int n=0; n<lstNodes.count(), n++)
        {
            childElem = lstNodes.at(n)::toElement();
            if (childElem.tagName == "message")
            {
                message = childElem.text();
            }
        }

Но не получается... Как же правильно тогда?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Kagami
  опции профиля:
сообщение 27.3.2009, 18:15
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

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




Репутация:   9  


Есть решение немного по-изящнее:
Раскрывающийся текст
    QDomElement root = domDocument.documentElement();
    QDomElement child = root.firstChildElement("page");
    while (!child.isNull()) {
        if (child.attribute("id") == "page01") {
            QDomElement message = child.firstChildElement("message");
            qDebug() << child.text();
        }
        child = child.nextSiblingElement("page");
    }

Перебираем только нужные элементы и не чувствительны к положению <message> - в предыдущем примере он обязан находиться в конце.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- FladeX   Xml - обращение к дочернему элементу   27.3.2009, 12:18
- - igor_bogomolov   Начну с того, что в приведенном Вами коде очень мн...   27.3.2009, 14:22
- - FladeX   Выдает ошибку crosses initialization of ‘QDomNodeL...   27.3.2009, 14:57
- - igor_bogomolov   ??? Я так понимаю, что childElem у Вас где-то уже ...   27.3.2009, 15:16
- - FladeX   childElem ранее объявлен не был. Замена строки не ...   27.3.2009, 15:23
- - igor_bogomolov   копируем куда-нибудь проект QTDIR/examples/xml/dom...   27.3.2009, 15:47
- - Kagami   Есть решение немного по-изящнее: Раскрывающийся те...   27.3.2009, 18:15
- - igor_bogomolov   Цитата(Kagami @ 27.3.2009, 18:15) Есть ре...   27.3.2009, 23:27
|- - Kagami   Цитата(igor_bogomolov @ 27.3.2009, 23:27)...   27.3.2009, 23:33
- - Litkevich Yuriy   Цитата(Kagami @ 28.3.2009, 2:33) .text()п...   28.3.2009, 3:34
|- - Kagami   Цитата(Litkevich Yuriy @ 28.3.2009, 3:34)...   28.3.2009, 9:16
- - FladeX   Kagami, спасибо большое! Мне как раз надо чтоб...   7.4.2009, 11:15
- - igor_bogomolov   Видимо у вас в коде есть что то вроде такого swi...   7.4.2009, 11:28
- - Litkevich Yuriy   Цитата(Kagami @ 28.3.2009, 13:16) Хм.. Чт...   7.4.2009, 11:45
- - FladeX   Итак, currentId() содержит айдишник текущей страни...   7.4.2009, 13:03
- - Litkevich Yuriy   FladeX, У меня есть тестовая программа по которой ...   7.4.2009, 13:36
- - Kagami   А какая область видимости у переменной message?   7.4.2009, 14:12
- - FladeX   Только внутри функции. Используется для QMessageBo...   7.4.2009, 14:30
- - Kagami   В приведенном выше кусочке вроде ошибок не видно. ...   7.4.2009, 17:19
- - FladeX   Вот функция целиком: cppvoid ExpertSystem:...   8.4.2009, 11:59
- - Kagami   Посидел десять минут, но раскусил этот орешек: Рас...   8.4.2009, 21:59
- - FladeX   Спасибо за развернутый ответ! Теперь понятнее ...   9.4.2009, 11:46
- - Kagami   Из-за области видимости переменной. Если ее создав...   9.4.2009, 13:25
- - FladeX   Не совсем понял, какую переменную мы создаем в усл...   10.4.2009, 15:00
- - Kagami   А какие значение возвращает currentId() ?   10.4.2009, 18:25
- - FladeX   Возвращает int. Но я уже решил проблему: Вместо э...   13.4.2009, 14:15
- - Litkevich Yuriy   Цитата(FladeX @ 13.4.2009, 18:15) Отдельн...   13.4.2009, 15:14
- - Kagami   Если бы я заметил что в середине обсуждения у тебя...   13.4.2009, 18:59


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


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




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