qt中xml文件的更新

引言

这篇文章与其说是xml文件的更新,不如说是修改xml文件中之前的某些值。

示例

该文章依旧是基于之前的读写xml文章的基础,找到xml文件中每个节点的ip,查找最新的数据中是否含有xml文件中该节点的ip,有 则更新其名称和id.

void Config::updateKvmSeatXmlInfo(QMap<QString, stuSeatInfo> &updateSeatSet)
{m_updateSeatSet = updateSeatSet;QString strPath = getExeFilePath();strPath += strKvmConfigFileName;QFile file(strPath);if (!file.open(QIODevice::ReadOnly)) {qDebug()<<QStringLiteral("打开")<<strPath<<QStringLiteral("文件失败!");return;}QDomDocument doc;if (!doc.setContent(&file)) {qDebug()<<QStringLiteral("文件")<<strPath<<QStringLiteral("解析失败!");file.close();return ;}file.close();QDomElement root = doc.documentElement();//获取根节点QDomNode node = root.firstChild();//根节点的第一个子节点if (!node.isNull()) {if (node.isElement()) {QDomElement element = node.toElement();if (element.tagName() == QString("seatInfo")) {updateSeatXmlInfo(element);}}}QString strXml = doc.toString();qDebug()<<QStringLiteral("更新后席位信息:")<<strXml;QFile exitFile(strPath);if (!exitFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {qDebug()<<QStringLiteral("打开")<<strPath<<QStringLiteral("文件失败!");return;}QTextStream out(&exitFile);doc.save(out,4,QDomNode::EncodingFromDocument);//此处也可以写为out<<strXml;只不过格式没有缩进,含有中文的处理exitFile.close();
}void Config::updateSeatXmlInfo(QDomElement &element)
{QMap<QString,stuSeatInfo>::iterator it;QDomNodeList nodeList = element.childNodes();for (int i = 0; i < nodeList.size(); ++i) {for (it = m_updateSeatSet.begin(); it != m_updateSeatSet.end(); ++it) {QDomNodeList seatNode = nodeList.at(i).childNodes();QString seatIp = seatNode.at(3).toElement().firstChild().nodeValue();if (seatIp == it.key()) {QString strSeatName = seatNode.at(1).toElement().firstChild().nodeValue();QString strSeatId = seatNode.at(2).toElement().firstChild().nodeValue();if (it.value().seatName.compare(strSeatName) != 0) {seatNode.at(1).toElement().firstChild().setNodeValue(it.value().seatName);}if (it.value().seatId.compare(strSeatId) != 0) {seatNode.at(2).toElement().firstChild().setNodeValue(it.value().seatId);}break;}}}
}

该文章写的可能不太好理解,原读者都能懂吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

稳居亚太第一,阿里云进军全球;李彦宏候选工程院院士;苹果巨大损失:工业设计核心元老纷纷离职……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 【5月1日 星期三】云の声音不…

Guns 切换Oracle分支

远程拉取Guns代码 git clone gitgitee.com:gb_90/guns.git进入本地拉取Guns代码的目录下面 cd guns/切换到oracle分支 git checkout oracle切换到未删除Oracle配置的历史版本 提交id号是 &#xff1a;24466d6 git reset --hard 24466d6查看&#xff1b; dir导入idea开发工具效果…

QT中字符串分割

引言 字符串“<ew,we,ewe,sd,sd,sd>”&#xff0c;当求每一个字段的值时&#xff0c;可以采用字符串分割的方式来实现。 使用示例 下面只记录关键函数split. 使用QString的分割函数split来分割字符串&#xff1a; QString str “<ew,we,ewe,sd,sd,sd>”; QStr…

ZStack张鑫:面对混合云浪潮 我们主动出击

戳蓝字“CSDN云计算”关注我们哦&#xff01;极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;人类首次捕获黑洞照片&#xff0c;让我们看到了原本幽暗的宇宙&#xff0c;也有…

MyBatis-Plus_简介

第 1 章 简介 MyBatisPlus 介绍 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 代码及文档发布地址 官方地址: http://mp.baomidou.com 代码发布地址: G…

qt中记录数据的一次接收处理方法

引言 在udp通信中&#xff0c;发送请求后&#xff0c;等待接收端的响应&#xff0c;有时一个回应被分割成好几次发送&#xff0c;这种反馈的形式出现带有随机性&#xff0c;正常的情况下是一次反馈所有的数据&#xff0c;但是会出现一次反馈被分成好几次反馈。像下面这样&…

解决ORA-00257: 归档程序错误。在释放之前仅限于内部连接

文章目录一、预先准备1. 现象2. 异常信息3. 分析二、解决方案2.1. 登录oracle2.2. 查看ARCHIVED LOG空间占用率2.3. 查看元空间大小2.4. 整空间上限2.5. 结果验证一、预先准备 1. 现象 场景1&#xff1a; 昨天尝试通过plsqldev尝试连接oracle数据库&#xff0c;报错&#xff…

qt中根据数据解析的结果动态的创建控件并布局

引言 有时候程序中的控件的个数是无法预测的&#xff0c;当程序启动时&#xff0c;根据解析的数据动态的创建n行m列的控件&#xff0c;并为其布局。下面记录一下动态创建控件&#xff0c;并布局。 运行效果 示例 此示例主要是从json配置文件中读取参数&#xff0c;然后根据参…

5分钟带你了解Kafka的技术架构 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;大家都知道 Kafka 是一个非常牛逼的消息队列框架&#xff0c;阿里的 RocketMQ 也是在 …

Mysql和Oracle 数据库操作工具类

适配Mysql和Oracle数据源 文章目录1. 适配Mysql和Oracle数据源2. 适配于Mysql数据源3. 适配Oeacle数据源1. 适配Mysql和Oracle数据源 package cn.stylefeng.guns.generator.core.util; import cn.stylefeng.guns.generator.modular.entity.DatabaseInfo; import lombok.extern…

QString类型转换为bool类型

方法 直接上代码 QString str "12.345";QVariant onLineTemp str;bool isValue onLineTemp.toBool();

Spark精华问答 | Spark的计算方法是什么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Spark是一个针对超大数据集合的低延迟的集群分布式计算系统&#xff0c;比MapReducer快40倍左右&#xff0c;是hadoop的升级版本&#xff0c;Hadoop作为第一代产品使用HDFS&#xff0c;第二代加入了Cache来保存中间计算结果&#xf…

qt中创建控件布局以及删除原有布局和控件

引言 当根据数据来创建控件并布局时&#xff0c;如果数据更新&#xff0c;那么之前创建的控件便需要删除后重新创建布局。该文主要说明将原来的布局和控件删除&#xff0c;重新创建并布局。 示例 先看一下ui文件&#xff1a; 下面是实现代码&#xff1a; void StatusViewDi…

Spring精华问答 | Spring 能帮我们做什么?

Spring框架是一个开源的Java平台,它提供了非常容易,非常迅速地开发健壮的Java应用程序的全面的基础设施支持。今天就让我们一起来看看关于Spring的精华问答吧。1Q&#xff1a;什么是Spring框架&#xff1f;A&#xff1a;Spring框架是一个为Java应用程序的开发提供了综合、广泛的…

qt自定义控件的样式

引言 自定义控件创建后&#xff0c;有时需要设置样式&#xff0c;下面记录一下设置样式时需要注意的点。 注意 1.设置自定义控件的样式时&#xff0c;需要下面的代码&#xff1a; void paintEvent(QPaintEvent *event) {Q_UNUSED(event);QStyleOption opt;opt.init(this);Q…

linux 上传文件 rz命令 提示command not found 解决方法

-bash: rz: command not found rz命令没找到&#xff1f; 执行sz&#xff0c;同样也没找到。 安装lrzsz&#xff1a; yum -y install lrzsz现在就可以正常使用rz、sz命令上传、下载数据了。 使用方法&#xff1a; 上传文件 rz filename下载文件 sz filename

IoT与大数据 如何激发数字营销最大潜能?

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;译者&#xff1a;风车云马 物联网与大数据概述物联网(IOT)简单理解&#xff0c;除了电…

qt中生成含有中文的json文件,读取含有中文的json文件

引言 之前将变量保存并在本地生成json文件&#xff0c;由于其中含有中文&#xff0c;导致生成的json文件出现乱码&#xff0c;或者就是生成的json文件没有乱码&#xff0c;但是读取生成的json文件时出现乱码&#xff0c;不能正常解析json. 示例 运行效果&#xff1a; 下面是…

年初新立Flag,新华三解决方案部做了点儿啥?

戳蓝字“CSDN云计算”关注我们哦&#xff01;极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;人人都提及的数字化时代&#xff0c;企业不想方设法提升效率怎么行&#xff1f…

qt中判断文件是否存在

实现 判断一个文件是否存在 bool isExistSpecificFile(QString strPath) {if (QFile::exists(strPath)) {return true;}return false; }注意&#xff1a; 这里的路径strPath是指文件所在的绝对路径&#xff0c;即完整的文件路径。