XPath-Expression unter Qt4.4 nutzen
Verfasst: 2. Juni 2008 14:50
Hallo,
nun endlich seit Qt4.4 gibt es auch XQuery im Angebot. Natürlich habe ich mich gleich an die Arbeit gemacht, und wollte es einmal testen.
Dazu habe ich zwei Varianten probiert, meine Daten aus dem XML zu bekommen.
1.)
Das XML-Dokument pool.xml beinhaltet genau zwei Elemente mit Namen Target. Diese werden direkt hintereinander in das ByteArray geschrieben und in der MessageBox ausgegeben. Die XPath-Anweisung ist also korrekt und lauffähig.
Wenn ich das ganze nun in eine StringList wandern lasse,
2.)
läuft er in den else-Block und gibt "Could not evaluate" aus. Die Dokumentation sagt mir, dass das Progamm xs:string erwartet. Genau das steht auch in meinem XML-Dokument im "Target"-Element.
Hat jemand schon mit den neuen Funktionen Erfahrungen gesammelt und kann mir ggf. bei meinem Problem helfen?
Mfg KK
nun endlich seit Qt4.4 gibt es auch XQuery im Angebot. Natürlich habe ich mich gleich an die Arbeit gemacht, und wollte es einmal testen.
Dazu habe ich zwei Varianten probiert, meine Daten aus dem XML zu bekommen.
1.)
Code: Alles auswählen
QXmlQuery query;
QByteArray byteArray;
QBuffer buffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
query.setQuery("doc('D:/wrk/prog/debug/pool.xml')/Pool/Connection/Target/text()");
QXmlSerializer serializer(query, &buffer);
query.evaluateTo(&serializer);
QString source = QString(byteArray);
QMessageBox::information(0, "", source);
Wenn ich das ganze nun in eine StringList wandern lasse,
2.)
Code: Alles auswählen
QXmlQuery query;
query.setQuery("doc('D:/wrk/prog/debug/pool.xml')/Pool/Connection/Target/text()");
if (query.isValid())
{
QStringList *list = new QStringList;
if (query.evaluateTo(list))
{
for (int i = 0; i < list->size(); ++i)
{
QMessageBox::information(0, QString("Number %1").arg(QString::number(i)), list->at(i));
}
}
else
{
QMessageBox::critical(0, "Error", "Could not evaluate.");
}
}
else
{
QMessageBox::critical(0, "Error", "QPath not valid.");
}
QMessageBox::information(0, "", source);
Hat jemand schon mit den neuen Funktionen Erfahrungen gesammelt und kann mir ggf. bei meinem Problem helfen?
Mfg KK