在Windows平台上使用Qt 4.8.4并尝试使用QXmlQuery而没有任何运气。显然没有找到解决方案就研究了这个主题。
这是xml文件
<?xml version="1.0" encoding="UTF-8"?>
<root>
<a>abc</a>
<a>def</a>
<a>123</a>
</root>
代码看起来像这样;
QFile temp("C:/Temp/data.xml");
bool opened = temp.open(QIODevice::ReadOnly | QIODevice::Text);
QXmlQuery q;
q.bindVariable("file", &temp);
q.setQuery("declare variable $file external;doc($file)//root");
bool valid = q.isValid();
QStringList items;
q.evaluateTo(&items);
int len = items.size();
文件已成功打开,QXmlQuery有效,但QStringList包含0个项目。为什么查询不返回结果?
答案 0 :(得分:1)
从
更改XQueryq.setQuery("declare variable $file external;doc($file)//root");
到
q.setQuery("declare variable $file external;doc($file)//root/string()");
解决了这个问题。
文档确实声明了#34;查询必须计算为一系列xs:string值。如果查询不计算字符串序列,则通常可以通过在XQuery末尾添加对string()的调用来转换值。&#34;
http://qt-project.org/doc/qt-4.8/qxmlquery.html#evaluateTo-3