在Windows平台上使用QT4.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项。为什么查询不返回结果?
发布于 2014-03-28 11:58:12
将XQuery更改为
q.setQuery("declare variable $file external;doc($file)//root");至
q.setQuery("declare variable $file external;doc($file)//root/string()"); 解决了问题。
文档实际上声明:“查询必须计算到xs:string值的序列。如果查询不计算字符串序列,则通常可以通过在XQuery末尾添加对string()的调用来转换值。”
http://qt-project.org/doc/qt-4.8/qxmlquery.html#evaluateTo-3
https://stackoverflow.com/questions/22710900
复制相似问题