我試圖用QXmlQuery解析Mac應用程序的「Info.plist」以檢索版本號。 這裏有Info.plist中的例子:QXmlQuery.evaluateQuery卡住
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>13A598</string>
<key>CFBundleShortVersionString</key>
<string>1.4</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.4</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
的目的是讓使用「CFBundleShortVersionString」鍵,「1.4」值。要做到這一點,我使用以下查詢:
/plist中/字典/鍵[節點()= 'CFBundleShortVersionString'] /以下同胞::串[1] /節點()
它完美。
現在,當我轉這Qt中,我使用下面的代碼:
QString version;
QString fileName = appPath + "/Contents/Info.plist";
QFile file(fileName);
if (file.open(QIODevice::ReadOnly)) {
QXmlQuery query;
query.bindVariable("file", &file);
query.setQuery("declare variable $file external; doc($file)/plist/dict/key[node()='CFBundleShortVersionString']/following-sibling::string[1]/node()");
query.evaluateTo(&version);
}
return version;
它去罰款,直至「query.evaluateTo」,其中有一段stucks,然後給我一個空值「版」。
有人可以幫忙嗎?
我仍然無法在OS X上重現代碼,只需使用'QApplication'而不是'QCoreApplication'。這是與Qt 5.1.1二進制下載(不是自編譯的)。 –