【发布时间】:2019-08-28 15:10:16
【问题描述】:
Qt 的 QXmlQuery::setQuery 有一个多态性,就像:
void QXmlQuery::setQuery(const QString &sourceCode, const QUrl &documentURI = QUrl())
但是,当我将HTML源代码传递给参数sourceCode,并尝试评估时,我只能得到一个错误:
file:/// 中的错误 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;
然后显示错误信息:
file:///html/body/ 中的错误 XPST0003,第 1 行第 2 列:语法错误,意外的未知关键字,需要 QName 或 NCName ""
这很奇怪,尽管我已经为 QXmlQuery::setQuery() 提供了一个有效的 HTML 源代码!
【问题讨论】:
-
可能是关于第二个参数,见doc.qt.io/qt-5/qxmlquery.html#details。检查 QUrl 是否有效。
-
@sirop 我的代码中的例子来自这个:stackoverflow.com/a/18677398/10865463
-
那你能解释一下吗:
query.setQuery("doc('index.html')/html/body/p[1]");?