1

从一个简单的 XML 文件开始:

<?xml version="1.0"?>
<playlist>
    <name>1 - first playlist</name>

    <song>Daft Punk\Discovery\Daft Punk-Discovery-01-One More Time.mp3</song>
</playlist>

我发现:

我正在尝试提取播放列表名称,所以我尝试了:

QFile source(filePath);
source.open(QIODevice::ReadOnly | QIODevice::Text);
QXmlQuery query(QXmlQuery::XSLT20);
query.setFocus(&source);
query.setQuery("string(//name)", QUrl(filePath));

QString result = "";
query.evaluateTo(&result);

qDebug() << result;

source.close();

filePath 是在此方法中传递的 QString。

无论我做什么,我都会从正在加载的文件中不断收到“解析错误:预期的开始标签”,但没有结果。当我检查文件中的内容时,它看起来是正确的。

4

1 回答 1

1

使用QXmlQuery query(QXmlQuery::XSLT20);您请求的是 XSLT 而不是 XPath 或 XQuery,我怀疑您会在库尝试将提供的 XPath 或 XQuery 表达式解析为 XML 文档时收到描述的错误(因为 XSLT 是 XML,但 XPath 或 XQuery 不是 XML)。因此,只需使用默认构造函数或将语言显式设置为QXmlQuery::XQuery10.

于 2016-01-20T13:04:51.557 回答