Xml - обращение к дочернему элементу |
Здравствуйте, гость ( Вход | Регистрация )
Xml - обращение к дочернему элементу |
FladeX |
27.3.2009, 12:18
Сообщение
#1
|
Студент Группа: Участник Сообщений: 67 Регистрация: 20.2.2009 Пользователь №: 564 Спасибо сказали: 0 раз(а) Репутация: 0 |
Структура xml:
Нужно по id найти в нем <page>, а затем получить оттуда содержимое <message>. Пытался делать например так:
Но не получается... Как же правильно тогда? |
|
|
Kagami |
8.4.2009, 21:59
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: 9 |
Посидел десять минут, но раскусил этот орешек:
Раскрывающийся текст void ExpertSystem::showHelp() { static QString lastHelpMessage; QString message; QDomDocument doc; QFile file("/home/opensuse/qt/expertsystem/help.xml"); if (!file.exists()) { QMessageBox::warning(this, QObject::trUtf8("Предупреждение"), QObject::trUtf8("Ошибка 001. Файл help.xml не существует")); } if (!file.open(QIODevice::ReadOnly)) { QMessageBox::warning(this, QObject::trUtf8("Предупреждение"), QObject::trUtf8("Ошибка 002. Невозможно открыть файл help.xml")); return; } if (!doc.setContent(&file)) { QMessageBox::warning(this, QObject::trUtf8("Предупреждение"), QObject::trUtf8("Ошибка 003. Невозможно прочитать файл help.xml")); file.close(); return; } //Второй раз устанавливать содержимое не надо // В результате получим pageid равное числу... QString pageid = "page" + QString("%1").arg(1, 2, 10, QChar('0')); //Вот нафига заводить еще один документ? Если мы уже все загрузили в doc QDomElement root = domDocument.documentElement(); QDomElement root = doc.documentElement(); //help у нас корневой элемент и уже содержится в root. Второй раз его искать не надо //С учетом вышесказанного эта строка не правильная QDomElement child = root.firstChildElement("page"); while (!child.isNull()) { if (child.attribute("id") == pageid) { QDomElement mess = child.firstChildElement("message"); message = mess.text(); //message = pageid; } child = child.nextSiblingElement("page"); } file.close(); //if (lastHelpMessage == message) // message = tr(""); QMessageBox::information(this, QObject::trUtf8("Подсказка"), message); lastHelpMessage = message; } P.S. Жалко что нельзя раскрашивать код, только так |
|
|
Текстовая версия | Сейчас: 3.2.2025, 0:31 |