![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
FladeX |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Структура xml:
Нужно по id найти в нем <page>, а затем получить оттуда содержимое <message>. Пытался делать например так:
Но не получается... Как же правильно тогда? |
|
|
igor_bogomolov |
![]()
Сообщение
#2
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
Начну с того, что в приведенном Вами коде очень много ошибок, что очень неприятно при отладке. Надо быть поокуратнее.
Цитата QDomElement QDomDocument::elementById ( const QString & elementId ) Returns the element whose ID is equal to elementId. If no element with the ID was found, this function returns a null element. Since the QDomClasses do not know which attributes are element IDs, this function returns always a null element. This may change in a future version. Т.е. насколько я понимаю, этот метод всегда вернет нулевой елемент. Я сделал так:
Данный код у меня работает. Может не самое оптимальное решение, кто знает как сделать лучше раскажите ![]() |
|
|
FladeX |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Выдает ошибку
на строке
что не так? |
|
|
igor_bogomolov |
![]()
Сообщение
#4
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
???
Я так понимаю, что childElem у Вас где-то уже объявлен. Сделайте просто
И domDocument, в Вашем случае объявлен как doc Отпишитесь о результате. Если что выложу компилябильный проект. |
|
|
FladeX |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
childElem ранее объявлен не был.
Замена строки не помогла, ошибка та же самая... |
|
|
igor_bogomolov |
![]()
Сообщение
#6
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
копируем куда-нибудь проект QTDIR/examples/xml/dombookmarks
В файле xbeltree.cpp ищем функцию bool XbelTree::read(QIODevice *device) Что бы не мучаться, заменяем весь ее код, на следущий: Раскрывающийся текст
Рядом с exe-шником кладем ваш файл Раскрывающийся текст
Компилируем, смотрим что выводит qDebug(); Не забываем отписаться о результатах. P.S. У меня все выше описанное прекрасно работает. |
|
|
Kagami |
![]()
Сообщение
#7
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Есть решение немного по-изящнее:
Раскрывающийся текст
Перебираем только нужные элементы и не чувствительны к положению <message> - в предыдущем примере он обязан находиться в конце. |
|
|
igor_bogomolov |
![]()
Сообщение
#8
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
Есть решение немного по-изящнее: Не буду врать, по специфике своей работы никак с xml сталкиваться не приходилось. Просто было интересно разобраться, вот и помог. Ваш же пример выдаёт не то что мы ожидаем. В топикстарте написано, что требуется вернуть данные тега "message", у Вас же получается следущее Цитата "title of page01text1" а надо Цитата "text1" в предыдущем примере он обязан находиться в конце. Да, я исходил из структуры файла ![]() |
|
|
Kagami |
![]()
Сообщение
#9
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#10
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 16.2.2025, 22:07 |