???Qt for Android解析AndroidManifest.xml
我本來想的是,解析AndroidManifest.xml裏面的version name,然後顯示在軟件版本號的地方。每次修改版本號就可以直接改xml文件就行,不用在軟件版本號的地方再手動改。初衷是這樣。但是我根據網上解析xml的方法去弄,文件都沒有打開……文件路徑不對嗎?還是……
代碼如下:
void readDocumentElement()
{
QFile file("./android/AndroidManifest.xml");
if (file.open(QFile::ReadOnly | QFile::Text))
{ // 以只寫模式打開文件
qDebug()<<QString::fromLocal8Bit("********** 文件打開成功 ********** ");
QXmlStreamReader reader(&file);
// 解析 XML,直到結束
while (!reader.atEnd())
{
// 讀取下一個元素
QXmlStreamReader::TokenType nType = reader.readNext();
switch (nType)
{
case QXmlStreamReader::StartDocument: { // 開始文檔
qDebug() << QString::fromLocal8Bit("********** 開始文檔(XML 聲明) ********** ");
// XML 聲明
QString strVersion = reader.documentVersion().toString();
QString strEncoding = reader.documentEncoding().toString();
bool bAlone = reader.isStandaloneDocument();
qDebug() << QString::fromLocal8Bit("版本:%1 編碼:%2 Standalone:%3")
.arg(strVersion).arg(strEncoding).arg(bAlone) << "\r\n";
break;
}
case QXmlStreamReader::Comment: { // 註釋
break;
}
case QXmlStreamReader::ProcessingInstruction: { // 處理指令
break;
}
case QXmlStreamReader::DTD: { // DTD
break;
}
case QXmlStreamReader::StartElement: { // 開始元素
break;
}
case QXmlStreamReader::EndDocument: { // 結束文檔
break;
}
default:
break;
}
}
if (reader.hasError()) { // 解析出錯
// qDebug() << QString::fromLocal8Bit("錯誤信息:%1 行號:%2 列號:%3 字符位移:%4").arg(reader.errorString()).arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.characterOffset());
}
file.close(); // 關閉文件
}
else{
qDebug()<< QString::fromLocal8Bit("文件打開失敗");
}
}