Qt的QXmlQuery :: setQuery具有多态性,就像:
void QXmlQuery::setQuery(const QString &sourceCode, const QUrl &documentURI = QUrl())
但是,当我将HTML源代码传递给参数sourceCode
并尝试求值时,我只会得到一个错误:
文件:///中的错误XPST0003,在第1行,第2列:语法错误,意外的未知关键字,需要QName或NCName
这里是一个例子:
QString srcHTML = "<html>......</html>"; // An HTML forked from any website
QXmlQuery query;
query.setQuery(srcHTML, QUrl("/html/body/"));
QString r;
query.evaluateTo(&r);
qDebug() << r;
然后显示一条错误消息:
文件:/// html / body /中的错误XPST0003,在第1行,第2列:语法错误,意外的未知关键字,预期为QName或NCName “”
这很奇怪,即使我已经向QXmlQuery :: setQuery()提供了有效的HTML源代码!
答案 0 :(得分:0)
使用query.setFocus(srcHTML); query.setQuery("/html/body");
。请注意,setFocus的输入字符串必须是格式正确的XML,而HTML通常不是。