Qt之读(解析)XML文件
来源:互联网 发布:纺织英语翻译软件 编辑:程序博客网 时间:2024/05/22 17:33
先上代码
//从config.xml中获取标签appenvironment和oa_app_version的值//appenvironment值为pro表示生产,为pre表示预生产QMap<QString, QString> readXml(){QMap<QString, QString> 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);之后调用QMap<QString, QString> readXml()是没有问题的,但是如果要在QApplication a(argc, argv);之前调用QMap<QString, QString> readXml()就会因为QCoreApplication::applicationDirPath()返回为空,导致无法正确解析XML。
此时可以调用Windows API,如下所示。
//从config.xml中获取标签appenvironment和oa_app_version的值//appenvironment值为pro表示生产,为pre表示预生产QMap<QString, QString> readXml(){QMap<QString, QString> 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格式如下。
<?xml version="1.0" encoding="UTF-8"?><client> <app> <Appname value="cangege"/> </app> <server> <sdkip value="********" /> <sdkport value="********" /><appid value="********" /><client_id value="********" /><oa_os_id value="********" /><oa_app_version value="1.0.0" /> <appenvironment value="pre" /> <!-- pre(预生产) pro (生产)--> </server><loginuser> <users id="********"/></loginuser></client>
阅读全文
1 0
- Qt之读(解析)XML文件
- qt解析xml文件
- Qt 解析XML文件
- QT----解析XML文件
- QT解析XML文件
- Qt XML文件解析
- QT读写XML文件之DOM方式解析XML
- Qt解析XML文件(QDomDocument)
- 初识---Qt解析XML文件(QDomDocument)
- Qt之解析XML(QXmlStreamReader)
- Qt之解析XML元素(QXmlStreamReader)
- qt 之解析 XML(QXmlStreamReader)
- qt 之解析XML元素(QXmlStreamReader)
- Qt浅谈之二十八解析XML文件
- Xml文件之解析
- QT开发(四十一)——XML文件解析基础
- QT开发(四十五)——XML文件解析总结
- xml解析之SAX解析xml文件
- angular中service和factory区别
- 三级菜单
- 不会修改PDF文件内容?PDF编辑器帮您轻松解决
- React Native Error while uploading app-debug.apk : Unknown failure ([CDS]close[0])
- 12月的音乐可视化笔记:我从TOP2000歌曲中,分析了这几年流行音乐的变化趋势
- Qt之读(解析)XML文件
- iOS 获取view上某一点的色值
- centos7 配置静态ip
- 结束8080端口占用
- [水水文]Fused Text Segmentation Networks for Multi-oriented Scene Text Detection
- Linux 内核测试和调试(5)
- 关于Spring中的<task:annotation-driven/>配置
- R语言 天猫评论爬虫_new
- AI 崛起,科学家的天下,程序员的谢幕