尝试使用 QXmlQuery 从 XML 文档中获取字符串

Trying to get a string out of an XML document with QXmlQuery

从一个简单的 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。

无论我做什么,我总是从正在加载的文件中获取 "Parse error: start tag expected",但没有结果。当我检查文件中的内容时,它看起来是正确的。

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