c++ - 如何在 QT 中读取 GPX 文件(xml 格式)?

标签 c++ qt qtcore qfile qxmlstreamreader

我有一个 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 .

请参阅下面的代码以使其正常工作。

测试.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;
}

主程序

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

关于c++ - 如何在 QT 中读取 GPX 文件(xml 格式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21015039/

相关文章:

c++ - Qt:每x个字符插入一个字符

c++ - 我应该返回 bool 还是 const bool?

c++ - "A Tour of C++"中的错误代码或不兼容的编译器?

c++ - 在 Qt 的 QFileSystemModel 中仅过滤目录和 xml 文件

qt - 在 Mac OS X 下更改 Qt 中的编译标志?

c++ - QXmlStreamReader 只返回一个元素

python - QMetaObject::invokeMethod 找不到该方法

c++ - Laravel Lumen 可以在嵌入式机器上运行吗?

c++ - 存储在 vector 中的对象的所有权

qt - 如何在 qt creator 中删除项目?