Dzień doby. Chciałbym w swoim programie dodać informację dotyczącą średniego kursu euro. Program jest opracowywany w Qt Creatorze. Aby pobrać dane z konkretnej strony korzystam z QNetworkAccessManager. Aby wyłuskać z tej paczki danych interesującą mnie wartość korzystam z QDomDocument. Niestety pojawia się błąd przy próbie załadowania dokumentu ("Failed to load doc"). Poniżej kod oraz zawartość pliku .xml
manager = new QNetworkAccessManager(this);
connect(manager,&QNetworkAccessManager::finished,this,[&](QNetworkReply * reply)
{
stringData = reply->readAll();
});
manager->get(QNetworkRequest(QUrl("http://api.nbp.pl/api/exchangerates/rates/a/eur/")));
QFile qFile("temp.xml");
QTextStream stream(&qFile);
stream<<stringData;
QDomDocument doc;
if(!qFile.open(QIODevice::ReadOnly| QIODevice::Text))
{
qDebug()<<"FALSE";
}
else
{
if(!doc.setContent(&qFile))
{
qDebug()<<"Failed to load doc";
}
qFile.close();
}
QDomElement root = doc.firstChildElement();
ListElements(root,"rates","mid");
}
void ListElements(QDomElement root, QString tagname, QString attribute)
{
QDomNodeList items = root.elementsByTagName(tagname);
qDebug()<<"Total items = "<<items.count();
for(int i=0; i<items.count();i++)
{
QDomNode itemnode = items.at(i);
if(itemnode.isElement())
{
QDomElement itemElem = itemnode.toElement();
qDebug()<<itemElem.attribute(attribute);
}
}
}
temp.xml
{"table":"A","currency":"euro","code":"EUR","rates":[{"no":"097/A/NBP/2022","effectiveDate":"2022-05-20","mid":4.6366}]}
Co powoduje ten błąd? Źle odczytuje dane za pomocą QNetworkAccessManager czy może źle korzystam z QDomDocument? Będę wdzięczny za jakiekolwiek wskazówki.
Pozdrawiam