QXmlQuery没有结果

时间:2014-03-28 10:57:22

标签: qt xpath xquery

在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个项目。为什么查询不返回结果?

1 个答案:

答案 0 :(得分:1)

更改XQuery
q.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