Mam taki plik XML:
"<?xml version="1.0"?>
<OrderDetails>
<Companies number_of_companies="2" number_of_tasks="4">
<Company id="1">
<Tasks>
<Task id="1" brutto="0.01" netto="0.00813008" euro="0.00192201"/>
<Task id="2" brutto="0.02" netto="0.0162602" euro="0.00384401"/>
<Task id="3" brutto="0.03" netto="0.0243902" euro="0.00576602"/>
<Task id="4" brutto="0.04" netto="0.0325203" euro="0.00768802"/>
</Tasks>
</Company>
<Company id="2">
<Tasks>
<Task id="1" brutto="50" netto="40.6504" euro="9.61003"/>
<Task id="2" brutto="60" netto="48.7805" euro="11.532"/>
<Task id="3" brutto="70" netto="56.9106" euro="13.454"/>
<Task id="4" brutto="80" netto="65.0407" euro="15.376"/>
</Tasks>
</Company>
</Companies>
</OrderDetails>"
Chciałbym go wczytać do wektora wektorów, w taki sposób, że jeśli brutto to QVector<QVector<double> >, będę po wczytaniu miał:
brutto[0] = [0.01, 0.02, 0.03, 0.04, 0.05]
brutto[1] = [50, 60, 70, 80]
Napisałem sobie taką metodę:
QVector<QVector<double> > readBruttoCostsFromXML(QString xml)
{
QXmlStreamReader xmlReader(xml);
int tasks = this->readNumOfTasksFromXML(xml);
int companies = this->readNumOfCompaniesFromXML(xml);
QVector<QVector<double> > bruttoCosts(companies);
int i=0, j = 0;
while(!xmlReader.atEnd() && !xmlReader.hasError()){
xmlReader.readNext();
if (xmlReader.name() == "Task" && xmlReader.isStartElement() && !xmlReader.isWhitespace())
{
bruttoCosts[j].push_back(xmlReader.attributes().value("brutto").toDouble());
i ++;
if(i == tasks-1)
{
i = 0;
j++;
}
qDebug() << bruttoCosts[i] << "\n";
}
}
return bruttoCosts;
}
Jednak program mi się wywala (piszę na Windowsie, tymczasowo), i nie mogę nawet zobaczyć, co jest w wektorze, a coś na pewno jest źle wczytane, bo dostaję błąd: ASSERT failure in QVector<T>::operator[]: "index out of range". Może ktoś z Was pomóc? Bo patrzę na to i nie widzę ...