Вопрос

У меня есть файл GPX, в основном это файл XML.Я хочу читать ценности широты и долготы из этого.Ниже я разместил образец файла GPX.

    <gpx>
    <wpt lon="80.0124" lat="13.125">
    </wpt>
    <wpt lon="80.0130" lat="13.124">
    </wpt>
    <wpt lon="80.0145" lat="13.122">
    </wpt>
    <wpt lon="80.0120" lat="13.121">
    </wpt>
    </gpx>
.

Мне нужно получать плавающие значения широты и долготы.Любая помощь и предложение ценится.

Спасибо.Могу ли я получить результат без двойных кавычек?

Это было полезно?

Решение

Класс класс здесь - QXMLstreamreader .

См. Код ниже, чтобы получить его работу.

test.xml

<gpx>
<wpt lon="80.0124" lat="13.125">
</wpt>
<wpt lon="80.0130" lat="13.124">
</wpt>
<wpt lon="80.0145" lat="13.122">
</wpt>
<wpt lon="80.0120" lat="13.121">
</wpt>
</gpx>
.

main.cpp

#include <QXmlStreamReader>
#include <QDebug>
#include <QString>
#include <QFile>

int main()
{
    QFile file("test.xml");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        qDebug() << "File open error:" << file.errorString();
        return 1;
    }
    QXmlStreamReader inputStream(&file);
    while (!inputStream.atEnd() && !inputStream.hasError())
    {
        inputStream.readNext();
        if (inputStream.isStartElement()) {
            QString name = inputStream.name().toString();
            if (name == "wpt")
                qDebug() << "lon:" << inputStream.attributes().value("lon").toFloat() << "lat:" << inputStream.attributes().value("lat").toFloat();
        }
    }
    return 0;
}
.

main.pro

TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp
.

Создание и запуск

qmake && make && ./main
.

Выход

lon: 80.0124 lat: 13.125 
lon: 80.013 lat: 13.124 
lon: 80.0145 lat: 13.122 
lon: 80.012 lat: 13.121
.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top