先上代碼
//從config.xml中獲取標(biāo)簽appenvironment和oa_app_version的值
//appenvironment值為pro表示生產(chǎn),為pre表示預(yù)生產(chǎn)
QMap readXml()
{
QMap mapList;
mapList.clear();
QString configXMLPath = QCoreApplication::applicationDirPath()+"\config\config.xml";
QFile file(configXMLPath);
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QXmlStreamReader reader(&file);
while (!reader.atEnd() && !reader.hasError())
{
QXmlStreamReader::TokenType token = reader.readNext();
if (token == QXmlStreamReader::StartElement)
{
if (reader.name() == "appenvironment" || reader.name() == "oa_app_version")
{
QXmlStreamAttributes attributes = reader.attributes();
if (attributes.hasAttribute("value"))
{
QString strValue = attributes.value("value").toString();
mapList.insert(reader.name().toString(), strValue);
}
}
}
}
//解析出錯(cuò)
if (reader.hasError())
{
QString errorInfo = QStringLiteral("XML解析錯(cuò)誤:%1 行號(hào):%2 列號(hào):%3 字符位移:%4").
arg(reader.errorString()).arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.characterOffset());
qDebug() << errorInfo;
}
file.close();
reader.clear();
}
return mapList;
}
這樣寫,如果是QApplication a(argc, argv);之后調(diào)用QMap此時(shí)可以調(diào)用Windows API,如下所示。
//從config.xml中獲取標(biāo)簽appenvironment和oa_app_version的值
//appenvironment值為pro表示生產(chǎn),為pre表示預(yù)生產(chǎn)
QMap readXml()
{
QMap mapList;
mapList.clear();
TCHAR szPath[MAX_PATH] = { 0 };
GetModuleFileName(NULL, szPath, MAX_PATH);
(_tcsrchr(szPath, _T('\')))[1] = 0;
QString configXMLPath= QString::fromUtf16((const ushort *)szPath)+"config\config.xml";
QFile file(configXMLPath);
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QXmlStreamReader reader(&file);
while (!reader.atEnd() && !reader.hasError())
{
QXmlStreamReader::TokenType token = reader.readNext();
if (token == QXmlStreamReader::StartElement)
{
if (reader.name() == "appenvironment" || reader.name() == "oa_app_version")
{
QXmlStreamAttributes attributes = reader.attributes();
if (attributes.hasAttribute("value"))
{
QString strValue = attributes.value("value").toString();
mapList.insert(reader.name().toString(), strValue);
}
}
}
}
//解析出錯(cuò)
if (reader.hasError())
{
QString errorInfo = QStringLiteral("XML解析錯(cuò)誤:%1 行號(hào):%2 列號(hào):%3 字符位移:%4").
arg(reader.errorString()).arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.characterOffset());
qDebug() << errorInfo;
}
file.close();
reader.clear();
}
return mapList;
}
XML格式如下。