@RubySword

Почему не работает XmlReader в QT?

Всем привет. Делаю простенький парсер xml файла в qt, но код не идет дальше строчкиif(xmlReader.isStartElement()). Отладчик на точке остановки не двигается дальше по коду. Вот код полностью:
class Maket{
public:
    QString name;
    QString timeBegin;
    QString timeCancel;
    int statValue;
};
QFile file("maket.xml");
    QList<Maket> maketList;
    if(file.open(QIODevice::ReadOnly)){
        QXmlStreamReader xmlReader;
        xmlReader.setDevice(&file);
        xmlReader.readNext();
        while (!xmlReader.atEnd()) {
            if(xmlReader.isStartElement()){
                    Maket maket;
                    if(xmlReader.name() == "measuringpoint"){
                        foreach (const QXmlStreamAttribute& attr, xmlReader.attributes()) {
                            if(attr.name().toString() == "name"){
                                maket.name = attr.value().toString();
                            }
                        }
                    }
                    else if(xmlReader.name() == "period"){
                        foreach (const QXmlStreamAttribute& attr, xmlReader.attributes()) {
                            if(attr.name().toString() == "start"){
                                maket.timeBegin = attr.value().toString();
                            }
                        }
                    }
                    else if(xmlReader.name() == "period"){
                        foreach (const QXmlStreamAttribute& attr, xmlReader.attributes()) {
                            if(attr.name().toString() == "end"){
                                maket.timeCancel = attr.value().toString();
                            }
                        }
                    }
                    else if(xmlReader.name() == "value"){
                        foreach (const QXmlStreamAttribute& attr, xmlReader.attributes()) {
                            if(attr.name().toString() == "value"){
                                maket.statValue = attr.value().toInt();
                            }
                        }
                    }
                    maketList.push_back(maket);
                    xmlReader.readNext();
                }
            file.close();
            }
    }

Подскажите в чем ошибка пожалуйста
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
Zifix
@Zifix Куратор тега Qt
Barbatum
Ну, раз метод isStartElement() возвращает false, значит структура документа не такая, какая ожидается кодом парсера.

Returns true if tokenType() equals StartElement; otherwise returns false
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы