尝试使用 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>
我发现:
- http://doc.qt.io/qt-5.5/qxmlquery.html
- How do I run XPath queries in QT?
我正在尝试提取播放列表名称,所以我尝试了:
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
.
从一个简单的 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>
我发现:
- http://doc.qt.io/qt-5.5/qxmlquery.html
- How do I run XPath queries in QT?
我正在尝试提取播放列表名称,所以我尝试了:
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
.