버전 번호를 검색하기 위해 QXmlQuery로 Mac 응용 프로그램의 "Info.plist"를 구문 분석하려고합니다. 여기의 Info.plist에 예입니다 :QXmlQuery.evaluateQuery stuck
<?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/DICT/키 [노드() = '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;
그것은 잘 간다를, 다음에 나에게 빈 값을 제공하는 동안 stucks "query.evaluateTo", "까지 번역".
누군가 도움을 줄 수 있습니까?
여전히 OS X에서 코드를 사용하여 답변을 만들지 못하고 단순히 QCoreApplication 대신 QApplication을 사용합니다. 이것은 Qt 5.1.1 바이너리 다운로드 (자체 컴파일되지 않음)입니다. –