2014-03-28 65 views
1

在Windows平臺上使用Qt 4.8.4,並試圖在沒有任何運氣的情況下使用QXmlQuery。顯然在沒有找到解決方案的情況下研究這個主題。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

只是一些猜測:您可以從文件中讀取,並且不如果你改變了路徑的URI幫助? '文件:/// C:/溫度/ data.xml' –

回答

1

改變XQuery與

q.setQuery("declare variable $file external;doc($file)//root"); 

q.setQuery("declare variable $file external;doc($file)//root/string()"); 

解決了這個問題。

文檔確實聲明瞭「查詢必須計算爲一個xs:string值的序列,如果查詢不計算爲一個字符串序列,那麼通常可以通過向string() XQuery的結尾「。

http://qt-project.org/doc/qt-4.8/qxmlquery.html#evaluateTo-3