【问题标题】:QXmlQuery::setQuery() cannot query when I pass source code to its parameter当我将源代码传递给其参数时,QXmlQuery::setQuery() 无法查询
【发布时间】: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 源代码!

【问题讨论】:

标签: c++ qt xquery


【解决方案1】:

使用query.setFocus(srcHTML); query.setQuery("/html/body");。请注意,setFocus 的输入字符串需要是格式良好的 XML,而 HTML 通常不是。

【讨论】:

  • 它也是。也许我必须找到另一种解析 HTML 的方法。
猜你喜欢
  • 1970-01-01
  • 2021-11-19
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
相关资源
最近更新 更多