Qt 实现读写xml

Qt编程之Xml文件的读取 目录 一、xml的格式说明 二、QT中读取xml的类与常用函数 三、代码思路 四、代码实现 五、结果展示 XML最主要的功能是数据传输,有的时候可以当一个小型的数据库来使用,因为其定义标签高度自由,所以在一些软件需要经常修改的配置变量常常采用xml格式的文件来保存,在需要用到该变量时在事先写好的xml类型文件中进行修改。 本篇博客给出的代码从如何完整读出一个xml文件的思路出发。 逻辑难度不大,但需要读者耐心琢磨。方能写出一个属于自己的读取xml的通用函数。 如果读者对x... 阅读详情

目录

定义

用途

写入效果

核心代码


定义


XML(Extensible Markup Language)即可扩展标记语言。
标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。

用途


XML设计用来传送及携带数据信息,不用来表现或展示数据,HTML则用来表现数据,所以XML用途的焦点是它说明数据是什么,以及携带数据信息。
(摘自维基百科)

熟悉对xml的操作,在项目开发中非常重要。
qt中提供了几种类可以对xml进行处理。本次介绍的是QXmlStreamWriter和QXmlStreamReader。
一种通过流来处理xml的方式。

写入效果

核心代码

引入

#include <QXmlStreamWriter>
#include <QXmlStreamReader>

​//写
void XmlHandle::xmlWrite(const QStringList &elements)
{
	QFile file(_filePath);
	file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text);
	_xmlWriter.setDevice(&file);
	_xmlWriter.setAutoFormatting(true);
	_xmlWriter.writeStartDocument();

	_xmlWriter.writeStartElement("root");	//root
	//写数据
	for (auto element: elements)
	{
		QStringList listParam = element.split(",");
		if (listParam.size() == XML_Node_Num)
		{
			QString name = listParam[0];
			QString type = listParam[1];

			_xmlWriter.writeStartElement("Info");	//Info	

			_xmlWriter.writeAttribute("Name", name);
			_xmlWriter.writeAttribute("Type", type);

			_xmlWriter.writeEndElement();	//Info
		}
	}
	_xmlWriter.writeEndElement();	//root
	_xmlWriter.writeEndDocument();
	file.close();
}

​
//读
QVector<Info> XmlHandle::xmlRead()
{
	QVector<Info> vecInfo;

	QFile file(_filePath);
	file.open(QIODevice::ReadOnly | QIODevice::Text);
	if (file.exists())
	{
		_xmlReader.setDevice(&file);
		while (!_xmlReader.atEnd())
		{
			QXmlStreamReader::TokenType type = _xmlReader.readNext();
			if(type==QXmlStreamReader::StartDocument)
				continue;
			if (type == QXmlStreamReader::StartElement)
			{
				QString name = _xmlReader.name().toLatin1();
				if (name == "root")
					continue;
				else if (name == "Info")
				{
					Info info;

					QString name = _xmlReader.attributes().value("Name").toLatin1();
					int type = _xmlReader.attributes().value("Type").toInt();

					info.name = name;
					info.type = type;
		
					vecInfo.append(info);
				}
			}
		}
	}
	file.close();
	return vecInfo;
}

 

Qt 两种方式对XML文件进行读写 XML文件是描述数据结构的可读文件,一种可以将数据存储在一个可以存储,搜索和共享格式中的方法,Qt中提供了QtXml模块来进行对XML文件的处理,本文主要介绍其中的DOM方式和文件流Stream方式。通过QFileDIalog::getOpenFileName方法获取文件名称,通过isEmpty进行选中文件判断,通过open进行打开文件判断,不成功弹出警告窗口。使用setContent()进行XML文件的检测,将XML文件解析成一个DOM树,并保存在内存中。 阅读详情

相关推荐

QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写

介绍 帮助文档:QXmlStreamReader、QXmlStreamWriter 除此以外读取时还需要使用QXmlStreamAttributes QXml-Token标记类型 Constant Value Description QXmlStreamReader::NoToken 0 The reader has not yet read anyth...

coologic 405

Qt 读取 XML 文件的方法

本文参考了多位大佬博客,以下是链接。 转自:(124条消息) Qt浅谈之二十八解析XML文件_乌托邦-优快云博客 转自:(124条消息) 利用 Qt 读取 XML 文件的方法_Ivan 的专栏-优快云博客_qt读取xml 一、简介 QtXml模块提供了一个读写XML文件的流,解析方法包含DOM和SAX。DOM(Document ObjectModel):将XML文件表示成一棵树,便于随机访问其中的节点,但消耗内存相对多一些。SAX(Simple APIfor XML):一种事件驱...

pmghy1的博客 2万+

QT5——xml文件的读写

1、使用流QXmlStreamReader、QXmlStreamWriter读写xml文件 项目的pro文件里面添加: QT +=core xml 用QXmlStreamReader读取xml文本内容 在路径C:\Users\Administrator\Desktop\ZGXIPCDemo中存放device.xml文件。内容以及各式如下: 使用qDebug()显示读取文件的内容 #include<QFile> #include<QXmlStreamReader> #in

Nie2014的博客 2620

qt读写xml文件

将整个 XML 文档读入内存,构建成一个树结构,允许程序在树结构上向前向后移动导航,这是与另外两种方式最大的区别,也就是允许实现多次解析器(对应于前面所说的一次解析器)。特别适合于实现一次解析器(所谓“一次解析器”,可以理解成我们只需读取文档一次,然后像一个遍历器从头到尾一次性处理 XML 文档,期间不会有反复的情况,也就是不会读完第一个标签,然后读第二个,读完第二个又返回去读第一个,这是不允许的);获取含有属性节点的属性。//获取根/子标签的标签名字,对应于createElement函数的参数。

baidu_16370559的博客 6270

Qt基础篇:Qt读写XML文件

QtXml模块提供了一个读写XML文件的流,解析方法包含DOM和SAX。 (1)DOM(Document ObjectModel):将XML文件表示成一棵树,便于随机访问其中的节点,但消耗内存相对多一些。 (2)SAX(Simple APIfor XML):一种事件驱动的XML API,接近于底层,速度较快,但不便于随机访问任意节点。

欧特GO 9995

Qt实现XML读写递归处理示例

Qt是一个跨平台的C++图形用户界面应用程序框架,广泛应用于开发具有复杂界面的软件应用程序。它为开发者提供了丰富的API,不仅能够帮助我们快速创建窗口程序,还能编写跨平台的应用程序。作为一款成熟的框架,Qt为软件开发提供了许多便利,从简单的控件布局到复杂的网络通信,以及与硬件的交互等。Qt的核心是一系列模块化和可重用的C++库。为了简化跨平台应用程序的开发,Qt利用信号与槽机制(Signal & Slot),这使得对象之间的通信变得非常灵活而简洁。

weixin_42608318的博客 441

Qt实现XML的读写

本文用实例讲述Qt读取xml文件的方法,固定套路写入一个文件,自己使用时,引用.h .cpp, 重写自己的读数据代码即可,也向读者展示了纯虚函数的使用

weixin_42898801的博客 1358

别再只会用官网例子了!Vxe-Table过滤功能深度自定义:从下拉框到服务端筛选的完整配置流程

本文深入解析Vxe-Table表格组件的过滤功能,从基础UI定制到服务端筛选的完整实现流程。通过实战案例演示如何超越官方示例,实现下拉框、日期范围等复杂过滤交互,并详细讲解混合过滤策略与性能优化技巧,帮助开发者应对大数据量场景下的表格筛选需求。

weixin_42526353的博客 205

Qt下实现XML、INI、JSON的文件读写示例开发

在项目开发过程中,发现经常遇见一些比如XML、INI、JSON等文件的读写,这里对这些文件进行整理和汇总,并展示一个简单的demo来实现上述文件的读写。

XCJandLL的博客 1746

Windows安装ros2(Jazzy版本+win10/win11)-4.构建ros2结点

这个位置也是ros2搜索package以及搜索node的路径, 如果把构建好的可执行文件乱动位置的话就找不到节点了,当然如果复制一个可执行文件以及可执行文件-script.py文件, ros2也就会认为你有一个新的节点了,运行这个拷贝的可执行文件程序都是ok的。由于上一个文章给powershell7也增加了启动执行ros2的环境初始化文件local_setup.ps1, 所以我们也可以直接在vscode中运行节点, 此种方式没有经由ros2托管, 缺少其他ros2的附加能力。

weixin_48398592的博客 7113

Python自然语言处理 NLTK 库用法入门教程【经典】

@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 本文实例讲述了Python自然语言处理 NLTK 库用法。分享给大家供大家参考,具体如下: 在这篇文章中,我们将基于 Python 讨论自然语言处理(NLP)。本教程将会使用 Python NLTK 库。NLTK 是一个当下流行的,用于自然语言处理的 Python 库。 那么 NLP 到底是什么?学习 NLP 能带来什么好处? ...

python函数基础教程 1万+

Qt读写Xml文件、QTreeWidget项实现可拖动、编辑、添加、删除等

Qt读写Xml文件,读取Xml文件内容并显示在QTreeWidget上,保存QTreeWidget内容为Xml文件

jxbinwd的博客 3419

STM32 cubeMX配置串口重定向

这篇文章主要讲解什么是串口重定向,为什么要串口串口重定向。使用printf函数和上位机通信是非常的方便的。希望大家都能够掌握。

m0_49476241的博客 4571

Qt4实现xml的读写操作

Qt4可以实现json操作,也可以实现xml文件操作。 xml文件主要有两种操作方式,1是dom操作,2是stream操作。 首先来看一下dom操作。 示例的文件如下: <?xml version='1.0' encoding='UTF-8'?> <文件库> <论文 编号="1"> <标题>孙悟空</标题> <作者>看我72变</作者> </论文>

zjjsd195的专栏 573

[ 人力资源面试篇 ] HR 面试题分析详解大集合,看完直怼面试官(二)

那么在这个系列的文章中,我们聊到 HR 面谈什么?并且总结了五十个常见的人力资源面试题,在这里分享给大家。

qq_51577576的博客 1380

智慧安防:基于Java+YOLOv8的视频AI识别平台设计与实现

张工,我们的园区智慧安防项目又出问题了!用Python写的YOLOv8 demo,拉3路RTSP流就卡,视频延迟超过5秒,入侵检测误报率太高,一到晚上光线差就全是误报,而且和我们的Java安防平台对接太麻烦,还要搭个消息队列,架构复杂得要死!“别慌,用Java+YOLOv8啊!

2601_94871597的博客 196

基于QT实现XML文件读写操作解析教程

基于QT实现XML文件读写操作解析教程 去发现同类优质开源项目:https://gitcode.com/ 本项目为一个基于QT框架的XML文件读写与解析操作的实现教程。本教程旨在帮助开发者理解并掌握如何使用QT进行XML文件的读取、写入和解析。 教程简介 在本教程中,您将学习到以下内容: 如何使用QT创建XML文件。 如何向XML文件中写入数据。 如何从XML文件中读取数据。 如何解析XML文件...

gitblog_06722的博客 549

【C++】开源:ncurses终端TUI文本界面库

ncurses配置使用(TUI)

DevFrank的博客 3165

Qt 实现对XML的读写操作实现信息管理

1.在菜单中打开xml,把内容读取到 tablewidget进行显示:1.本程序实现了xml读取、xml写入、检索    读取:{ QDomDocument doc; QFile file(_xmlFilePath); //QTextCodec *vCodec = QTextCodec::codecForName("UTF-8"); //QByteArray encoded...

liuwb博客 2174

用miniconda建立PyTorch、Keras、TensorFlow三个环境

如果还没有安装Miniconda,请从[Miniconda官网](https://docs.conda.io/en/latest/miniconda.html)下载合适的版本并进行安装。如果遇到问题,可以通过编辑`~/.condarc`文件来临时禁用某个源,或者通过`conda config --remove channels`命令来移除配置的镜像源。要切换到不同的环境,先使用`conda deactivate`命令退出当前环境,再用`conda activate 环境名称`命令激活另一个环境。

数字人生 2464

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

qt 实现一个简单的读写改 xml文件

qt 实现一个简单的读写改 xml文件 项目结构如图所示 其实只用到了main.cpp main.cpp #include <QCoreApplication> #include <QtXml> //也可以include <QDomDocument> //写xml void WriteXml() { // <?xml version="1.0" encoding="UTF-8"?> // <library> // &

qq_30400965的博客 595

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

qt 读写文本、xml文件

QMessageBox::information(this,"提示","没有文件名");qDebug()

wyyy2088511的博客 552

STM32F407中文手册

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C++ QT应用之读写xml文件

配置文件的使用对程序的部分功能或数据调整有着很好的良性作用,但同时应注意对配置文件的慎重使用,避免滥用,过多的配置文件信息,会给程序的交互及各种功能的使用带来不友好的一面。在进行C++/QT 项目的开发过程中不可避免的需要使用到配置文件,配置文件的格式可以是txt,ini,xml等格式。qDebug() << "成功修改 CamBrandType 字段为:" << newValue;qDebug() << "XML 解析错误:" << reader.errorString();// 跳过原文本内容。

weixin_52921501的博客 561

基于QT实现XML文件读写操作解析教程:掌握高效数据交互技巧

基于QT实现XML文件读写操作解析教程:掌握高效数据交互技巧 去发现同类优质开源项目:https://gitcode.com/ XML(可扩展标记语言)作为一种轻量级的数据交换格式,在现代软件开发中有着广泛的应用。本项目是一个基于QT框架的XML文件读写与解析操作实现教程,旨在帮助开发者深入理解并掌握如何使用QT进行高效的数据交互。 项目介绍 本项目提供了一套详尽的教程,涵盖了使用QT框架进行XM...

gitblog_06737的博客 285

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

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

weixin_42467768的博客 750
上一篇: Qt 实现动态矩阵界面
下一篇: Qt+SDL+ffmpeg 实现音视频播放器
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值