当前位置: 首页 > news >正文

qt使用QDomDocument读写xml文件

在使用QDomDocument读写xml之前需要在工程文件添加:
QT += xml

1.生成xml文件

void createXml(QString xmlName)
{QFile file(xmlName);if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate |QIODevice::Text))return false;QDomDocument doc;QDomProcessingInstruction instruction; //添加处理命令instruction=doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");doc.appendChild(instruction);
/*
<bookstore><book category="c++"><price>98</price></book><book category="语文"><price>100</price></book>
</bookstore>
*/QDomElement root = doc.createElement("bookstore");doc.appendChild(root);QDomElement book = doc.createElement("book");book.setAttribute("category", "C++");	//生成category节点root.appendChild(book);QDomElement price= doc.createElement("price");book.appendChild(price);QDomText text = doc.createTextNode("98");price.appendChild(text);book = doc.createElement("book");book.setAttribute("category", QString::fromLocal8Bit("语文"));root.appendChild(book);price= doc.createElement("price");book.appendChild(price);text = doc.createTextNode("100");price.appendChild(text);QTextStream stream(&file);stream.setCodec("UTF_8");doc.save(stream,4,QDomNode::EncodingFromTextStream);file.close();
}

在这里插入图片描述
2.读取xml文件

void loadXml(QString xmlName)
{QFile file(xmlName);if(!file.open(QFile::ReadOnly | QFile::Text)){return;}QString strError;int errorLine;int errorColumn;QDomDocument doc;if(!doc.setContent(&file, false, &strError, &errorLine, &errorColumn)){return;}QDomElement root = doc.documentElement();if(root.tagName() == "bookstore"){QDomNode book = root.firstChild();while(!book.isNull()){if(book.toElement().tagName() == "book"){QString str = book.toElement().attribute("category");	//获取category属性内容qDebug()<<str;QDomNode node = book.firstChild();while(!node.isNull()){if(node.toElement().tagName() == "price"){QString price = node.toElement().text();qDebug()<<price;}node = node.nextSibling();}}book = book.nextSibling();}}
}
void appendXml(QDomDocument &doc,QDomElement &root)
{QDomElement book = doc.createElement("book");book.setAttribute("category", "C++");	//生成category节点root.appendChild(book);QDomElement price= doc.createElement("price");book.appendChild(price);QDomText text = doc.createTextNode("98");price.appendChild(text);book = doc.createElement("book");book.setAttribute("category", QString::fromLocal8Bit("语文"));root.appendChild(book);price= doc.createElement("price");text = doc.createTextNode("100");price.appendChild(text);book.appendChild(price);
}

void openFileWriteXML(QString xmlPath)
{QFile file(xmlPath);if(!file.open(QFile::ReadOnly | QFile::Text)){return;}QString strError;int errorLine;int errorColumn;QDomDocument doc;if(!doc.setContent(&file, false, &strError, &errorLine, &errorColumn)){return;}QDomElement root = doc.documentElement();}

在这里插入图片描述

相关文章:

  • SpringBoot 流式输出时,正常输出后为何突然报错?
  • 《Windows PE》3.2.3 NT头-扩展头
  • Vscode、小皮面板安装
  • 智能招聘系统小程序的设计
  • OpenCL 学习(1)---- OpenCL 基本概念
  • PGMP-03战略一致性
  • 解决docker一直出现“=> ERROR [internal] load metadata for docker.io/library/xxx“的问题
  • 【Kubernetes】常见面试题汇总(四十)
  • 大联大友尚集团推出基于炬芯科技产品的蓝牙音箱方案
  • Linux-基础篇文件权限和组的管理-练习实践(附答案)
  • 算法打卡:第十一章 图论part11
  • RabbitMQ的高级特性-事务
  • 深度学习之贝叶斯分类器
  • NASA数据集:ATLAS/ICESat-2 L3B 每日和每月网格化海冰自由面高度,第 4 版
  • 多个excel表数据比对操作
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Angularjs之国际化
  • Computed property XXX was assigned to but it has no setter
  • es6
  • JavaScript中的对象个人分享
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • 入口文件开始,分析Vue源码实现
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 手机端车牌号码键盘的vue组件
  • 王永庆:技术创新改变教育未来
  • 小试R空间处理新库sf
  • 学习使用ExpressJS 4.0中的新Router
  • ​力扣解法汇总946-验证栈序列
  • #{}和${}的区别是什么 -- java面试
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (152)时序收敛--->(02)时序收敛二
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (day6) 319. 灯泡开关
  • (力扣题库)跳跃游戏II(c++)
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (五)Python 垃圾回收机制
  • (转)详解PHP处理密码的几种方式
  • .NET C# 操作Neo4j图数据库
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net FrameWork总结
  • .net MySql
  • .net 程序发生了一个不可捕获的异常
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET开源、简单、实用的数据库文档生成工具
  • .net流程开发平台的一些难点(1)
  • .Net小白的大学四年,内含面经
  • @ModelAttribute注解使用
  • @Responsebody与@RequestBody
  • [ C++ ] STL_list 使用及其模拟实现