QtNetwork: загрузите XML-файл и прочитайте его содержимое

У меня есть приложение Qt, где я пытаюсь загрузить файл XML с сервера и затем прочитать содержимое файла.
К сожалению, я не могу получить содержимое загруженного файла в QDomDocument,

Это то что я пробовал

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(fileIsReady(QNetworkReply*)) );
manager->get(QNetworkRequest(QUrl("http://example.com/file.xml")));fileIsReady(QNetworkReply *reply){

QTemporaryFile tempFile;
if(tempFile.open()){
tempFile.write(reply->readAll());
QDomDocument versionXML;
QDomElement root;

if(!versionXML.setContent(&tempFile)){
qDebug() << "failed to load version file" << endl;
}
else{
root=versionXML.firstChildElement();
//...
}

}

}

Как мне этого добиться?

0

Решение

Я думаю, что потоковые интерфейсы довольно сложно использовать, когда вы новичок в Qt. Если у вас нет супер-больших загрузок, которые помещаются в ОЗУ, просто используйте QByteArray.

fileIsReady(QNetworkReply *reply){
QByteArray data = reply->readAll();
qDebug() << "XML download size:" << data.size() << "bytes";
qDebug() << QString::​fromUtf8(data);

QDomDocument versionXML;

if(!versionXML.setContent(data))
{
qWarning() << "Failed to parse XML";
}

// ...
}
1

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


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