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

时间:2016-01-18 10:08:00

标签: xml xpath xquery qt5.5 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”,并且没有结果。当我检查文件中的内容时,它看起来是正确的。

1 个答案:

答案 0 :(得分:1)

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