Basically I have wrote a method to test XQuery in Qt 4.4.
I can not get this thing to return any results!
I dummied up some data in the variable "sSampleData" for testing.
I've tried different XQueries like "doc($internalFile)/html/body/p", but they all return no results. I don't get any errors... just no results. 
Do you guys see something glaringly wrong?
void QtDemo44::SearchFromString(const QString& sQuery, const QString& sData)
{
" <body>"
" <p id='test'>I love Jessica</p>"
" <p>Something else</p>"
" </body>"
"</html>";
InputDevice.setData(sSampleData.toUtf8());
bool bOpenInput
= InputDevice.
open(QIODevice::ReadOnly);
if (bOpenInput == false)
{
QMessageBox::warning(this,
"Buffer Error",
"Could not open buffer");
return;
}
QXmlQuery xmlQuery;
QString sNewQuery
= "declare variable $internalFile external;\n" + sQuery;
xmlQuery.bindVariable("internalFile", &InputDevice);
xmlQuery.setQuery(sNewQuery);
bool bIsValid = xmlQuery.isValid();
if (bIsValid == true)
{
// One way
//QStringList slResults;
//xmlQuery.evaluateTo(&slResults);
//if (slResults.size() > 0)
//{
// QMessageBox::warning(this, "Found something!", "This actually works?");
//}
// Another way
OutputDevice.setData(sResults.toUtf8());
QXmlSerializer xmlSerializer(xmlQuery, &OutputDevice);
xmlQuery.evaluateTo(&xmlSerializer);
uiDemo.txtResults->setPlainText(sResults);
}
else
{
QMessageBox::warning(this,
"XQuery Error",
"The query set was not valid");
}
}
void QtDemo44::SearchFromString(const QString& sQuery, const QString& sData)
{
QString sSampleData = "<html>"
" <body>"
" <p id='test'>I love Jessica</p>"
" <p>Something else</p>"
" </body>"
"</html>";
QBuffer InputDevice;
InputDevice.setData(sSampleData.toUtf8());
bool bOpenInput = InputDevice.open(QIODevice::ReadOnly);
if (bOpenInput == false)
{
QMessageBox::warning(this, "Buffer Error", "Could not open buffer");
return;
}
QXmlQuery xmlQuery;
QString sNewQuery = "declare variable $internalFile external;\n" + sQuery;
xmlQuery.bindVariable("internalFile", &InputDevice);
xmlQuery.setQuery(sNewQuery);
bool bIsValid = xmlQuery.isValid();
if (bIsValid == true)
{
// One way
//QStringList slResults;
//xmlQuery.evaluateTo(&slResults);
//if (slResults.size() > 0)
//{
// QMessageBox::warning(this, "Found something!", "This actually works?");
//}
// Another way
QString sResults;
QBuffer OutputDevice;
OutputDevice.setData(sResults.toUtf8());
OutputDevice.open(QIODevice::ReadWrite);
QXmlSerializer xmlSerializer(xmlQuery, &OutputDevice);
xmlQuery.evaluateTo(&xmlSerializer);
uiDemo.txtResults->setPlainText(sResults);
}
else
{
QMessageBox::warning(this, "XQuery Error", "The query set was not valid");
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks