Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2013, 15:01   #1
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию Доступ к элементам xml-файла в Qt

Всем привет!

Читаю следующий xml-файл в объект типа QDomDocument:

Код:
<Matrix> 
<Description> 
        <rows>3</rows> 
        <columns>4</columns> 
</Description> 
<row1> 
        <cell>23.7</cell> 
        <cell>2.7</cell> 
        <cell>3.7</cell> 
        <cell>23.9</cell>       
</row1> 
<row2> 
        <cell>13.0</cell> 
        <cell>2.7</cell> 
        <cell>3.7</cell> 
        <cell>2</cell>  
</row2> 
<row3> 
        <cell>2.5</cell> 
        <cell>2.7</cell> 
        <cell>3.7</cell> 
        <cell>23.9</cell>       
</row3> 
</Matrix>
Далее хочу вывести названия тегов row1 и row2:

Код:
    qDebug() << rowElement1.tagName();
    qDebug() << rowElement2.tagName();
Ожидаю увидеть:
Цитата:
"row1"
"row2"
Вижу:
Цитата:
"row1"
"row1"
Код:
#include <QApplication>

#include <QFile>
#include <QTextStream>

#include <QDomDocument>
#include <QDomElement>
#include <QDomText>

#include <QMessageBox>

#include <QDebug>
#include <QObject>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    QFile file( "matrix.xml" );
    if( !file.open( QIODevice::ReadOnly | QIODevice::Text ) )
    {
        QMessageBox::critical(NULL, QObject::tr("Error"), QObject::tr("Failed to open file for reading"));
        return 0;
    }

    QDomDocument document;
    if( !document.setContent( &file ) )
    {
        QMessageBox::critical(NULL, QObject::tr("Error"), QObject::tr("Failed to parse the file into a DOM tree"));
        file.close();
        return 0;
    }

    file.close();

    QDomElement matrixElement = document.documentElement();

    QDomNode descriptionNode = matrixElement.firstChild();

    QDomElement rowElement1 = descriptionNode.nextSiblingElement();
    qDebug() << rowElement1.tagName();

    QDomElement rowElement2 = descriptionNode.nextSiblingElement();
    qDebug() << rowElement2.tagName();

    app.exec();
}
Заранее спасибо!

Иван
8Observer8 вне форума Ответить с цитированием
Старый 08.01.2013, 16:21   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Ответ найден!

Вот так надо:

Код:
QDomElement rowElement2 = rowElement1.nextSiblingElement();
qDebug() << rowElement2.tagName();
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доступ к элементам MozillaWindowClass Gangsta15 Общие вопросы Delphi 3 08.11.2015 13:51
QListView - доступ к элементам списка Krater Qt и кроссплатформенное программирование С/С++ 1 23.10.2011 13:36
доступ к элементам вложенных структур tormozina Общие вопросы C/C++ 2 17.03.2011 21:39
Наследование доступ к элементам. Lazio Общие вопросы C/C++ 1 20.04.2010 22:52
доступ к элементам выделенной строки в DBGrid yulia БД в Delphi 2 12.12.2007 12:51