Hallo upsala,
danke für den Hinweis.
Mit der Methode
elementsByTagName( ) von der Klasse QDomDocument kann ich den Inhalt von gewissen Tags, z. B. von <depno>2</depno> die 2, auslesen.
Nun möchte ich die eingelesenen Daten in eine Liste der wie folgt definierten Struktur eintragen.
Bei der Liste handelt es sich um eine vom Typ
QList:
Code: Alles auswählen
typedef struct ArtData
{
QString depno;
QString pno;
QString rsd;
QString name;
}ArtData;
typedef QList<ArtData> ArtList;
.....
.....
.....
In folgenden Methode werden 2-XML Dateien geöffnet, gelesen, geparst und die gewissen Daten(depno, pno und name) in einer Liste (ArtList artL) gespeichert.
Code: Alles auswählen
int artDataToList(const QString &sArtXML,const QString &sP2rXML,ArtList artL)
{
ArtData artD;
QDomDocument docArt;
......
int indexL=0;
while(indexL<artL.size()) // artL= Typ ArtList
{
QDomNodeList domListArt = docArt.elementsByTagName("depno");
for(uint i=0;i<domListArt.length();i++)
{
childArtDepNo = domListArt.item(i).toElement();
artL[ i ].depno = childArtDepNo.text();
cout<<"["<<i<<"]"<<qPrintable(artL[ i ].depno)<<endl;
}
indexL++;
articleL.append(/*ein Datensatz von Typ ArtData*/);
}
In diesem Sourcecode-Teil soll die while()-Schleife solange laufen, bis am Ende der Liste angekommen ist. In der for()-Schleife werden wird der letztendlich der Inhalt der Tags mit der Bezeichnung depno ausgegeben.
Wenn ich jedoch die Methode in der main()-Methode die Listengröße von artL ausgebe, kommt 0 heraus. Natürlich wird vorher die Methode artDataToList() aufgerufen.
Wie gebe ich die richtige Listenngröße aus bzw. wie ermittle ich sie (Methode size() von QList?). Was muss ich tun, damit die while()-Schleife tatsächlich über die gesamte Liste geht.
Der Aufruf in der main()-Methode sieht wie folgt aus:
Code: Alles auswählen
int main()
{
ArticleList artL;
articleDataToList("art.xml","p2r.xml",artL);
cout<<"\nGroesse von artL: "<<artL.size()<<endl;
return 0;
}
Kann mir jemand sagen, wie die Liste richtig fülle, so dass ich in der Lage bin, auf die einzelnen Elemente zuzugreifen und gewisse Elemente miteinander zu vergleichen.
Bin für jeden Hinweis bzw. Tipp dankbar.
Gruß
mister.xy