???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("文件打开失败");
}
}