QT之xml文件的读写
QT之xml文件的读写
- 简介
- 用法举例
简介
QT的QDomDocument、QDomElement、QDomNode是Qt XML模块中的三个类,用于解析和操作XML文档。
1)QDomDocument类:
QDomDocument类表示整个XML文档。它提供了解析XML文档的方法,如setContent()和setContent(),以及生成XML文档的方法,如toByteArray()和toString()。
QDomDocument类还包括一些常用的操作,如创建新元素(createElement())、创建新文本节点(createTextNode())和创建新注释(createComment())。
2. QDomElement类:
QDomElement类表示XML文档中的一个元素。它提供了获取和设置元素名称(tagName()和setTagName())、获取和设置元素属性(attribute()和setAttribute())以及获取和设置元素文本内容(text()和setText())的方法。
QDomElement类还包括一些用于遍历和操作子元素的方法,如firstChildElement()、lastChildElement()、nextElementSibling()和previousElementSibling()。这些方法可以方便地遍历元素的子元素和兄弟元素。
3. QDomNode类:
QDomNode类表示XML文档中的一个节点,可以是元素、文本节点或注释等。它提供了一些基本的方法,如获取节点类型(nodeType())、获取节点名称(nodeName())和获取节点值(nodeValue())。
QDomNode类还包括一些用于遍历节点的方法,如firstChild()、lastChild()、nextSibling()和previousSibling()。这些方法可以方便地遍历节点的子节点和兄弟节点。
用法举例
首先,我们假设有一个名为"example.xml"的XML文件,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<data> <name>John Doe</name> <age>30</age> <email>johndoe@example.com</email>
</data>
1)读取XML文件:
#include <QCoreApplication>
#include <QFile>
#include <QDomDocument>
#include <QDomElement>
#include <QDebug> int main(int argc, char *argv[])
{ QCoreApplication a(argc, argv); QString fileName = "example.xml"; QFile file(fileName); if (!file.open(QIODevice::ReadOnly)) { qDebug() << "Failed to open file:" << fileName; return -1; } QDomDocument doc; if (!doc.setContent(&file)) { qDebug() << "Failed to parse XML file:" << fileName; file.close(); return -1; } file.close(); QDomElement root = doc.documentElement(); QDomNode n = root.firstChild(); while (!n.isNull()) { QDomElement e = n.toElement(); if (!e.isNull()) { qDebug() << e.tagName() << ":" << e.text(); } n = n.nextSibling(); // 获取下一个子节点 } return 0;
}
2)写入XML文件:
#include <QCoreApplication>
#include <QFile>
#include <QDomDocument>
#include <QDomElement>
#include <QTextStream>
#include <QDebug> int main(int argc, char *argv[])
{ QCoreApplication a(argc, argv); QString fileName = "output.xml"; QDomDocument doc; QDomElement root = doc.createElement("data"); doc.appendChild(root); QDomElement nameElement = doc.createElement("name"); nameElement.appendChild(doc.createTextNode("John Doe")); root.appendChild(nameElement); QDomElement ageElement = doc.createElement("age"); ageElement.appendChild(doc.createTextNode("30")); root.appendChild(ageElement); QDomElement emailElement = doc.createElement("email"); emailElement.appendChild(doc.createTextNode("johndoe@example.com")); root.appendChild(emailElement); QFile file(fileName); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { qDebug() << "Failed to open file:" << fileName; return -1; } QTextStream stream(&file); doc.save(stream, 4); // 设置缩进为4个空格 file.close(); return 0;
}
相关文章:
QT之xml文件的读写
QT之xml文件的读写 简介用法举例 简介 QT的QDomDocument、QDomElement、QDomNode是Qt XML模块中的三个类,用于解析和操作XML文档。 1)QDomDocument类: QDomDocument类表示整个XML文档。它提供了解析XML文档的方法,如setContent(…...
C语言中的异常处理机制是什么?
C语言中的异常处理机制 C语言是一门强大而灵活的编程语言,它为程序员提供了广泛的控制权和自由度。然而,C语言本身并不提供像其他高级语言一样的内置异常处理机制,如Java中的try-catch或Python中的异常处理。因此,C语言程序员需要…...
Java中的并发编程模型和常用工具类
本文主要介绍了Java中的并发编程模型和常用工具类,首先阐述了并发编程的概念及其重要性,然后详细介绍了线程的基本概念、生命周期和状态转换、同步与互斥、死锁问题以及线程池的使用和实现原理。接着介绍了synchronized关键字和Lock接口的使用、原子变量…...
第10章 MySQL(一)
10.1 谈谈MySQL的架构 难度:★★ 重点:★ 白话解析 要想彻底的理解MySQL,它的架构一定要先弄清楚,当Java程序员通过JDBC或者Mybatis去执行一条SQL的时候,到底经历了什么。下边先看一幅图: 户端:Java程序员通过JDBC或者Mybatis去拿MySQL的驱动程序,实际上就是拿客户端。…...
英飞凌 Tricore 架构中断系统详解
本文以TC3系列MCU为例,先来了解中断源是如何产生的,再看一下CPU是如何处理中断源的。 AURIX TC3XX的中断路由模块 Interrupt Router (IR) 在TC3中,中断既可以被CPU处理,也可以被DMA处理,所以手册中不再把中断称为中断…...
单例模式:饿汉式
单例模式全局仅一个实例,用于获取公共的内容 头文件mglobalinfomgr.h class MGlobalInfoMgr {MGlobalInfoMgr();~MGlobalInfoMgr(); public:static MGlobalInfoMgr* GetInstance(); private:static MGlobalInfoMgr* _instance; }; 源文件mglobalinfomgr.cpp MGl…...
什么是视图
目录 一、什么是视图 二、视图的作用 三、创建视图 四、使用视图 1.使用视图查询员工信息 五、注意事项 六、补充 一、什么是视图 视图是基于查询的虚拟表,是一个逻辑表,本身并不包含数据。同真实的表一样,视图包含一系列带有名称的列…...
C++——list(2)
作者:几冬雪来 时间:2023年9月28日 内容:C——list内容讲解 目录 前言: list的const迭代器: const的iterator: const迭代器: operator->: 拷贝构造: 迭代器接口补充&…...
Django基础讲解-路由控制器和视图(Django-02)
一 路由控制器 参考链接: Django源码阅读:路由(二) - 知乎 Route路由, 是一种映射关系!路由是把客户端请求的 url路径与视图进行绑定 映射的一种关系。 这个/timer通过路由控制器最终匹配到myapp.views中的视图函数 …...
【算法题】2873. 有序三元组中的最大值 I
题目: 给你一个下标从 0 开始的整数数组 nums 。 请你从所有满足 i < j < k 的下标三元组 (i, j, k) 中,找出并返回下标三元组的最大值。如果所有满足条件的三元组的值都是负数,则返回 0 。 下标三元组 (i, j, k) 的值等于 (nums[i]…...
HTML5 跨屏前端框架 Amaze UI
Amaze UI采用国际最前沿的“组件式开发”以及“移动优先”的设计理念,基于其丰富的组件,开发者可通过简单拼装即可快速构建出HTML5网页应用,上线仅半年,Amaze UI就成为了国内最流行的前端框架,目前在Github上收获Star数…...
EXCEL会计记账报表财务软件企业公司做账系统凭证自动生成报表
本系统基于VBA编程设计,具有界面简洁美观,操作方便快捷,功能完备实用的特点,系统分为基本信息、凭证处理、账簿查询、会计报表、固定资产管理、系统管理、凭证数据库七大模块,您只需要录入记账凭证,就可以自…...
Can‘t pickle <class ‘__main__.Test‘>: it‘s not the same object as __main__.Test
目录 原因1 类名重复了 案例1 变量名和类名重复 原因1 类名重复了 检查项目代码,是不是其他地方有同名类。 案例1 变量名和类名重复 转自:python3报错Cant pickle <class __main__.Test>: its not the same object as __main__.Test解决 - 知乎…...
第九章 动态规划 part14 1143. 最长公共子序列 1035. 不相交的线 53. 最大子序和
第五十六天| 第九章 动态规划 part14 1143. 最长公共子序列 1035. 不相交的线 53. 最大子序和 一、1143. 最长公共子序列 题目链接: 题目介绍: 思路: 本题和“最长重复子数组”区别在于**这里不要求是连续的了,但要有相对顺序*…...
腾讯云服务器南京地域详细介绍、测试IP和Ping值测速
腾讯云服务器南京地域怎么样?南京地域很不错,正好处于中间的位置,南方北方用户均可以选择,网络延迟更低速度更快,并且目前南京地域有活动,南京地域可用区可选南京一区、南京二区和南京三区,腾讯…...
理解CSS的层叠性和继承性
CSS的层叠性(cascading)指的是在同一元素上应用多个样式时,不同样式之间的优先级别以及如何进行组合和冲突解决的规则。具体来说,CSS采用的是“选择器优先级”规则来判断哪个样式优先级更高,如果多个样式的优先级相同&…...
OSI体系结构和TCP/IP体系结构
在第一章( 计网第一章 )的时候,曾经提到过OSI体系结构和TCP/IP体系结构,并对它们进行了简单的对比。这篇博客在其基础上进行更深层次的理解。 一.OSI体系结构: 通信子网: 计算机网络在逻辑功能上可以分为…...
侯捷 C++ STL标准库和泛型编程 —— 8 适配器
8 适配器 适配器 Adapter 只是一个小变化,比如改个接口,函数名称等等其出现在三个地方:仿函数适配器,迭代器适配器,容器适配器可以使用继承 / 复合的两种方式实现,STL中都用复合 其思想就是将该记的东西记…...
每日一题 416 分割等和子集(01背包)
题目 分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] …...
U盘插上就显示让格式化是坏了吗?
U盘以其体积小巧、存储容量大、读写速度快的特点,在各种工作和个人使用场合中得到了广泛应用,因此深得用户好评。然而,在日常使用U盘的过程中,经常会遇到一些问题和挑战。今天,我将为大家详细解释U盘出现要求格式化的现…...
如何让经典DirectX游戏在现代Windows上完美运行:DDrawCompat终极兼容解决方案
如何让经典DirectX游戏在现代Windows上完美运行:DDrawCompat终极兼容解决方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.co…...
为Dify扩展AI图表与文档生成能力:微服务架构实战指南
1. 项目概述:为Dify打造专属的AI图表与文档生成工具箱如果你正在使用Dify构建自己的AI应用,并且希望让AI不仅能生成文字,还能直接输出流程图、思维导图、PPT甚至试卷,那么这个项目就是为你准备的。brightwang/dify-tool-service是…...
Arm A64指令集SIMD与浮点寄存器架构解析
1. A64指令集的SIMD与浮点寄存器架构解析在Armv8-A架构中,A64指令集引入了强大的向量处理能力,通过32个128位宽的V寄存器(V0-V31)实现了高效的SIMD(单指令多数据)和浮点运算支持。这套寄存器文件的设计巧妙…...
BIOS里找不到SSD硬盘?Win10启动失败?可能是ESP引导分区‘隐身’了,手把手教你用PE盘和DiskGenius把它找回来
BIOS里找不到SSD硬盘?Win10启动失败?可能是ESP引导分区‘隐身’了 最近遇到一个奇怪的故障:明明SSD硬盘在PE系统里能正常识别,但BIOS启动项里却死活找不到它。系统反复提示"reboot and select proper boot device"&…...
2000-2025年《中国县域统计年鉴》pdf+excel版(附赠面板数据)
资源介绍《中国县域统计年鉴》2000-2025一、数据介绍《中国县域统计年鉴》是一部全面反映我国县域社会经济发展状况的资料性年鉴,从2014年开始分为《中国县域统计年鉴(县市卷)》和《中国县域统计年鉴(乡镇卷)》两卷。数…...
【AI原生架构黄金法则】:SITS 2026现场实录的7条反直觉设计铁律(仅限首批参会专家内部流出)
AI原生应用架构设计:SITS 2026技术专家实战经验分享 更多请点击: https://intelliparadigm.com 第一章:SITS 2026现场共识与AI原生架构范式跃迁 在SITS 2026全球智能系统技术峰会上,来自37个国家的架构师、AI平台工程师与标准化组…...
ExplorerPatcher:彻底改造你的Windows界面体验,打造个性化高效工作环境
ExplorerPatcher:彻底改造你的Windows界面体验,打造个性化高效工作环境 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher …...
ClaudeCode入门08-Git配合(小白入门:不知道怎么写Git提交记录?让AI自动帮你写好)
🎯 本文目标 学会用 Claude Code 自动化 Git 工作流:自动写 Commit Message、管理分支、处理冲突。 😰 Git 新手的痛点 git commit -m "fix" git commit -m "update" git commit -m "修改了一些东西" 不知道 Conventional Commits 是什么 …...
终极指南:如何用WarcraftHelper彻底解决魔兽争霸3的现代系统兼容性问题
终极指南:如何用WarcraftHelper彻底解决魔兽争霸3的现代系统兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为魔兽争…...
Temu 批量视频更新效率:10 分钟搞定全店素材,抢占内容流量高地
2026 年 Temu 平台内容化流量分配机制全面落地,商品视频权重持续攀升,成为决定搜索排名与转化效果的核心变量。但多数卖家仍受困于手动逐个上传视频的低效模式,错失流量红利。凌风工具箱基于 Temu 官方 API 开发的批量视频更新功能࿰…...
