Как прочитать файл GPX (в формате xml) в QT?

У меня есть файл 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>

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

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

1

Решение

Ключевой класс здесь 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
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]