Qt配置文件之Xml

告别QT依赖:用C++和TinyXML2库独立读写XML配置文件(附完整项目源码) 本文详细介绍了如何使用C++和TinyXML2库独立读写XML配置文件,摆脱对QT框架的依赖。通过实战案例和性能对比,展示了TinyXML2在轻量级XML处理中的优势,包括简洁API、高效性能和跨平台支持,适合资源受限的嵌入式系统开发。 阅读详情

点击上方蓝字可关注公众号呦,方便下次阅读~

XML(可扩展标记语言)文件本身不能对自己“做出”任何操作。它们是存储数据的一种简单方式,而存储的数据可以被其它软件轻松读取。很多程序都会使用可扩展标记语言(XML)来存储数据。XML可用来存储数据、携带数据和交换数据,不是为了显示数据而设计的。

 

配置文件在程序中的应用还是很常见的,如我们需要启动一个Socket 的客户端去连接远程的Server,这时需要设置服务器的Ip和Port。当我们本次设置完成后,下次再使用的时候希望程序“记录”这个Ip和Port,我们直接连接即可,而不是要求用户再输入一次。面对这种需要“记录”的功能,我们可以使用配置文件。

 

对于数量不多的配置信息,我们可以使用QSettings进行记录,而对于一些复杂而且数量较多的配置信息,我们则可以使用配置文件。如Xml配置文件、Json配置文件等。

 

程序平台:ubuntu、 Qt 5.5.1

 

程序配置文件的主体功能:构造一个配置信息的结构体ConfigInfo,用于存储需要记录的信息,在点击Save按钮时写入配置文件,在构造函数中读取配置信息。当我们下次再运行程序时,读取配置文件后,将我们上次保存的信息显示到UI界面上。该Demo是用来记录Ip和Port的。

1. 写Xml文件函数

①生成Xml文件

void Widget::writeXmlConfig(const QString &fileName, ConfigInfo &configInfo){    QDomDocument doc;    QDomProcessingInstructioninstruction= doc.createProcessingInstruction("xml","version=\"1.0\"encoding=\"UTF-8\"");    doc.appendChild(instruction);
    QDomElement root = doc.createElement("Config");//创建根节点    doc.appendChild(root);                  //添加根节点    //ip    QDomElement strIP = doc.createElement("Ip");    root.appendChild(strIP);               //添加元素节点到根节点    QDomText strIpText = doc.createTextNode(configInfo.ip);    strIP.appendChild(strIpText);        //添加元素文本到元素节点    //port    QDomElement strPort = doc.createElement("Port");    root.appendChild(strPort);            //添加元素节点到根节点    QDomText strPortText = doc.createTextNode(QString::number(configInfo.port));    strPort.appendChild(strPortText);    //添加元素文本到元素节点

    saveXmlConfig(fileName, doc);
}

②写入完成后保存到文件中:

void Widget::saveXmlConfig(const QString &fileName, QDomDocument &doc){    QDir m_dir("./testXmlConfig");    if(!m_dir.exists())    {        system("mkdir ./testXmlConfig");    }
    QFile file(m_dir.absolutePath() + "/" + fileName);    if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text))    {        return;    }
    QTextStream out(&file);    out.setCodec("UTF-8");    doc.save(out, 4, QDomNode::EncodingFromTextStream);    file.close();}

2. 读取Xml文件

①读取Xml文件

void Widget::readXmlConfig(const QString &fileName, ConfigInfo &configInfo){    QFile file(fileName);    if(file.open(QIODevice::ReadOnly))    {        QDomDocument doc("testConfig");
        if(doc.setContent(&file))        {            QDomElement root = doc.documentElement();            listDom(root,configInfo);        }
        file.close();    }}

②遍历存储的节点

void Widget::listDom(QDomElement &docElem,                     ConfigInfo &configInfo){    QDomNode node = docElem.firstChild();    if(node.toElement().isNull())    {        return;    }
    while(!node.isNull())    {        QDomElement element = node.toElement();
        if(element.tagName() == "Ip")        {            configInfo.ip = element.text();            qDebug() << "test ip" << configInfo.ip;        }        if(element.tagName() == "Port")        {            configInfo.port = element.text().toInt();            qDebug() << "test port" << configInfo.port;        }
        node = node.nextSibling();    }}

以后有机会可以和大家介绍下读取Xml文件后将他们显示到Qt的TreeWidget上。

往期精选:Qt 中国象棋项目

                 Modbus 协议介绍及Modbus调试助手的使用

                  Qt 串口调试助手

                  Qt Socket 传输图片

                   Python 爬取天气状况发送给微信好友

                   Python Socket 传输图片

欢迎大家关注公众号: Pou光明

Qt实现XML配置文件生成程序 Qt实现XML配置文件生成程序,主要用于为软件版本升级、更新时,生成服务端的配置文件。 阅读详情

相关推荐

Qt实现XML配置文件生成程序(升级版)

新增源目录与输出目录的选择 新增历史记录功能,再次打开将会记忆上次选取的源目录、输出目录、URL、版本号 新增文件复制功能,点击生成时将会把文件复制到输出目录 新增程序图标

Completits_的博客 627

Qt 读取和写入xml文件工程示例、xml的特点

xml叫做可扩展标记语言,常被用在互联网数据传输中。 特点:是与操作系统、编程语言都无关,可以实现不同系统间的数据传输。 编写格式:举例 <?xml version = "1.0" encoding = "UTF-8"?> <FanTest> <teacher> <TName>姓名</TName> <TSChool>学校</TSChool> <TAge>年龄</TAge>

qq_44820566的博客 1640

三种1:4传输线变压器巴伦的分析

满足多模多馈天线系统匹配要求的传输线变压器巴仑有:双线传输线变压器( 见图1) 、三线传输线变压器( 见图4) 和四线传输线变压器( 见图5) 。尽管3 者的结构不同, 但都可实现1∶4 阻抗变换和不平衡-平衡转换。下面就应用电报方程对它们的阻抗变换特性和输出平衡特性进行分析。

weixin_42407808的博客 8049

QT中XML的使用(学习笔记)

XML 文档实例 //第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码 (utf-8) <?xml version='1.0' encoding='utf-8'?> //XML 声明 <日销售清单> //描述文档的根元素 <日期 date="2020-08-02"> //描述文档的根元素 <时间 time="14:18:27"> //描述文档的根元素 <厂家>一汽大众&l.

humble_Program的博客 1783

【ES】--Elasticsearch的分词器深度研究

分词器是ik_max_word,会将“龙马家书”拆分为“龙马”、“马家”、“家书”。然后filter配置的是edge_ngram_filter,在上面拆分的token词组基础上,按照edge_ngram_filter规则进一步拆分。从结果看:分词器是keyword,filter支持edge_ngram_filter,字符过滤器支持tsconvert【简繁体】。分词器是keyword,表明是不进行分词,但filtet中edge_ngram_filter是按照布长方式拆分token,所以得到如此结果。

寻梦友的博客 2440

Office LTSC 2021/2024专业部署:ODT+config.xml标准化实战

Office部署本质上是企业终端软件生命周期管理的关键环节,其核心原理在于通过声明式配置驱动安装、激活与组件裁剪。Office Deployment Tool(ODT)作为微软官方命令行引擎,配合config.xml这一DSL契约文件,实现可版本控制、可审计、可回滚的自动化交付。该方案技术价值突出体现在稳定性保障(如LTSC长期支持通道)、合规性强化(不绕过授权机制)及运维提效(批量部署、离线支持)。典型应用场景覆盖教育机房批量装机、政企终端标准化、医疗HIS工作站部署等对功能冻结与系统确定性要求严苛的环境

diaocuiguo2493的博客 561

Qt:xml与ini配置文件的写入和读取

基于QT的项目实现了对XML和INI配置文件的写入和读取功能。通过使用QT的相关类和函数,如`QFile`、`QDomDocument`和`QSettings`等,可以方便地将用户界面中的配置信息写入到XML和INI文件中,或从文件中读取配置信息。项目还包含了错误处理机制,确保文件操作的完整性。该项目提供了一种简单而实用的方式来管理和存储应用程序的配置信息。

HandsomeJacky的博客 1715

基于Simulink的发动机管理系统中的自适应增压控制系统设计

通过上述详细设计步骤,我们成功开发了一个基于Simulink的自适应增压控制系统。该系统不仅能够实时监测和预测发动机的运行状态,动态调整增压压力目标值,还具备实时监控、故障诊断和保护功能,确保系统的安全性和可靠性。此外,通过仿真实验和硬件在环测试,我们验证了系统的性能,并对其进行了优化,使其能够更好地满足实际应用需求。这个项目展示了如何利用MATLAB/Simulink的强大功能,结合控制理论和工程实践,开发出高效、可靠的自适应增压控制系统。

MHD0815的博客 221

Qt学习笔记(4):利用XML配置文件实现参数取值

之前问题解决方案:通常在只有少数几种可能的情况下会使用if或者switch语句实现,但是当取值可能太多时,这种方法比较混乱,并且不易维护和后期修改。现在解决方法:以xml文件作为参数配置文件,然后通过读取xml文件的形式实现参数取值。举例:当a<1时,b=0;1<a<10时,b=2;10<a<20时,b=3…示例:当0<a<8时,返回b=12;31<a<50时,返回b=139;10<a<17时,返回b=57;17<a<31时,返回b=93;8<a<10时,返回b=29;即b的取值依据a的范围来决定。

weixin_45832156的博客 514

【路径规划】基于matlab蚁群算法机器人栅格地图最短路径规划【含Matlab源码 4590期】

基于matlab蚁群算法机器人栅格地图最短路径规划 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 1277

GEE:使用 CCDC 算法进行连续变化检测和分类

连续变化检测和分类(CCDC)算法是一种广泛应用于遥感数据分析的方法,可以用于检测土地覆盖变化、农作物生长状态的变化以及水资源的变化等。Google Earth Engine是一个强大的云端平台,提供了丰富的遥感数据和工具,可以用于执行各种类型的遥感数据分析。本文将介绍如何使用Google Earth Engine的CCDC算法进行连续变化检测和分类。

养乐多的博客 5679

qt xml组包_Qt之XML文件的读取和存储

XML文件大家应该很熟悉,与ini一样,XML也是常用的软件配置文件格式。在写一个XML文件之前,首先工作是设计好XML文件的结构。这个时候推荐一款好用的XML设计工具XMLSpy可以在官网下载安装https://www.altova.com/download,并申请使用版本序列号。设计完的结构如下:XML设计结构图设计完结构之后,可以导出例子XML文件如下:XML文件样式到这里,我们的xml文件...

weixin_42467768的博客 750

ardupilot BMI088加速度陀螺仪学习

本节主要记录ardupilot 中BMI088传感器的学习过程,欢迎批评指正。BMI088是一款高性能6轴惯性传感器,由16位数字三轴±24g加速度计和16位数字三轴±2000°/ s陀螺仪组成。 BMI088允许高精度测量方向和沿三个正交轴的运动检测。BMI088具有高振动鲁棒性和3 x 4.5 x0.95mm³的小尺寸,是用于无人机和机器人应用等恶劣环境的高性能IMU中的独特产品。 BMI088专门设计用于有效抑制由于PCB上的共振或整个系统的结构而可能发生的振动。 除了高振动稳定性外,BMI088的出

陌城烟雨 2056

文件中port_Qt配置文件之Xml

XML(可扩展标记语言)文件本身不能对自己“做出”任何操作。它们是存储数据的一种简单方式,而存储的数据可以被其它软件轻松读取。很多程序都会使用可扩展标记语言(XML)来存储数据。XML可用来存储数据、携带数据和交换数据,不是为了显示数据而设计的。配置文件在程序中的应用还是很常见的,如我们需要启动一个Socket 的客户端去连接远程的Server,这时需要设置服务器的Ip和Port。当我们本次设置完...

weixin_39643336的博客 123

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

Robot_PLC_HMI_Automation 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ubuntu qt 生成 报表_Qt配置文件之Xml

XML(可扩展标记语言)文件本身不能对自己“做出”任何操作。它们是存储数据的一种简单方式,而存储的数据可以被其它软件轻松读取。很多程序都会使用可扩展标记语言(XML)来存储数据。XML可用来存储数据、携带数据和交换数据,不是为了显示数据而设计的。配置文件在程序中的应用还是很常见的,如我们需要启动一个Socket 的客户端去连接远程的Server,这时需要设置服务器的Ip和Port。当我们本次设置完...

weixin_39853843的博客 266

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

QT读取xml配置文件

//获取字符串字段 QString ConfigHelper::GetStringConfigValue(QString str) { if(str == "InitDeviceNo") { return getMacPath(); }else { QString filePath=QString("%1/%2"...

weixin_30474613的博客 915

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

qt android文件读写文件,qt android 开发之写入xml配置文件篇

应用初始化本地数据,需要读取配置文件,小编介绍如何通过xml简单写入配置文件,至于为什么选择这个格式,主要因为在qml中有一个很好的类使用:XmlListModelxmlListModel能直接读取xml配置文件,快速方便开发,再加上自己写一个专门写入配置文件的类,两个就成了绝配啊!代码:datasbase.h#ifndef DATASBASE_H#define DATASBASE_H#inclu...

weixin_39861920的博客 1037

QT xml 配置文件

简介 QT读取、保存xml文件 环境: QT 5.5.1、xxx.xml、win7 32位

u012830675的博客 2692

qt android 开发之写入xml配置文件篇

应用初始化本地数据,需要读取配置文件,小编介绍如何通过xml简单写入配置文件,至于为什么选择这个格式,主要因为在qml中有一个很好的类使用:XmlListModelxmlListModel能直接读取xml配置文件,快速方便开发,再加上自己写一个专门写入配置文件的类,两个就成了绝配啊!代码:datasbase.h #ifndef DATAS...

weixin_34123613的博客 397

Qt-配置文件(INI/JSON/XML)

这里仅介绍三者作为配置文件时的用法,他们还有其他很多功能。三种配置格式对比💡 选择建议:简单配置、用户设置、快速原型:Web应用、前后端配置、复杂数据结构:企业系统、文档配置、需要严格验证的场景。

Ghy_01的博客 690

Qt读写ini配置文件(QSettings)、XML

1、ini相关的2、XML相关的。

weixin_56819992的博客 1369

告别QT依赖:用C++和TinyXML2库在Windows/Linux上独立读写XML配置文件

本文详细介绍了如何使用C++和TinyXML2库在Windows/Linux平台上独立读写XML配置文件,摆脱对QT框架的依赖。通过对比TinyXML2与QT XML模块的优势,提供项目集成、编译配置及实战代码示例,帮助开发者实现轻量级、高性能的XML文件操作,特别适合嵌入式系统和高性能服务程序。

weixin_30561177的博客 466

Log4Qt 配置文件终极指南:properties、JSON、XML 三大格式如何一站配齐

Log4Qt 是专为 Qt 跨平台 C++ 应用打造的日志框架(Log4j 的 C++/Qt 移植版)。它同时支持 **properties、JSON、XML** 三种配置文件格式,且三者完全等价——同一套配置引擎,任选你熟悉的格式即可。本文带你快速掌握配置文件查找顺序、核心键名写法与格式选型建议,几分钟就能写出生产级日志配置。 ## 📂 自动查找与加载顺序 不想写一行初始化代码?Log4Q

gitblog_01030的博客 280

Qt读写三种文件,QSettings读ini配置文件,QJsonDocument读JSON文件,QDomDocument读xml文件

除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。qreadjson.h文件内容如下。qreadxml.cpp文件如下。软件信息,注册表信息。

hw5230的博客 747

Qt读写三种文件,QSettings读ini配置文件,QJsonDocument读JSON文件,QDomDocument读xml文件...

第一种INI配置文件 .ini文件是InitializationFile的缩写,即初始化文件。 除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。 读INI文件 INI文件内容如下: [conn] i...

weixin_30902675的博客 390
上一篇: pymodbus使用介绍
下一篇: Linux下Qt创建共享库与链接共享库详解
Pou光明
博客等级 码龄12年 3701粉丝 398原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值