日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 芯聞號 > 充電吧
[導讀]先上代碼 //從config.xml中獲取標簽appenvironment和oa_app_version的值 //appenvironment值為pro表示生產(chǎn),為pre表示預生產(chǎn) QMap rea

先上代碼

//從config.xml中獲取標簽appenvironment和oa_app_version的值
//appenvironment值為pro表示生產(chǎn),為pre表示預生產(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);
					}
				}
			}
		}
		//解析出錯
		if (reader.hasError())
		{
			QString errorInfo = QStringLiteral("XML解析錯誤:%1  行號:%2  列號:%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 readXml()是沒有問題的,但是如果要在QApplication a(argc, argv);之前調(diào)用QMap readXml()就會因為QCoreApplication::applicationDirPath()返回為空,導致無法正確解析XML。

此時可以調(diào)用Windows API,如下所示。

//從config.xml中獲取標簽appenvironment和oa_app_version的值
//appenvironment值為pro表示生產(chǎn),為pre表示預生產(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);
					}
				}
			}
		}
		//解析出錯
		if (reader.hasError())
		{
			QString errorInfo = QStringLiteral("XML解析錯誤:%1  行號:%2  列號:%3  字符位移:%4").
				arg(reader.errorString()).arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.characterOffset());
			qDebug() << errorInfo;
		}

		file.close();
		reader.clear();
	}
	return mapList;
}

XML格式如下。



    
        
    
    
        
        
		
		
		
		 
		 
    
	
	     
	







本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉