Per prima cosa una precisazione: esistono due modi per creare file xml, nella prima il tag contiene l'informazione mentre nella seconda l'informazione e' racchiusa tra i tag
per esempio
caso 1 : <tag id="0"/>
caso 2 : <id>0</tag>
![]() |
| Caso 1 |
![]() |
| Caso 2 (KML) |
Il secondo caso corriponde a come sono formati i file xml per esempio dei servizi RSS e di Google Earth
Il motivo di questa precisazione risiede nel fatto che il metodo di lettura non e' valido per tutti i formati
Il tutorial di http://www.voidrealms.com (tutorial Qt 95) non interpreta correttamente il formato 2
kml.pro (importante modificare il file di progetto perche' si usa la libreria QtXml che non e' normalmente linkata)
-----------------------------------
#-------------------------------------------------
#
# Project created by QtCreator 2013-01-23T10:12:21
#
#-------------------------------------------------
QT += core
QT += xml
TARGET = untitled
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
--------------------------
main.cpp
--------------------------
#include <QtCore>#include <QtXml>#include <QDebug>int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QString filename("C:/Casa.kml");QTextStream cout(stdout);QFile file(filename);bool open = file.open(QIODevice::ReadOnly | QIODevice::Text);if (!open){cout << "Couldn't open file" << endl;return 1;}else{cout << "File opened OK" << endl;}QXmlStreamReader xml(&file);qDebug() << "Encoding: " << xml.documentEncoding().toString() << endl;while (!xml.atEnd() && !xml.hasError()){xml.readNext();if (xml.isStartElement()){QString name = xml.name().toString();if ((name=="longitude") || (name == "latitude")){qDebug() << "element name: '" << xml.name().toString() << "'" << ", text: '" << xml.readElementText() << "'" << endl;}}else if (xml.hasError()){qDebug() << "XML error: " << xml.errorString() << endl;}else if (xml.atEnd()){qDebug() << "Reached end, done" << endl;}}return a.exec();}
--------------------------


Nessun commento:
Posta un commento