当前位置: 首页 > 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();}

在这里插入图片描述

http://www.lryc.cn/news/454944.html

相关文章:

  • Oracle架构之表空间详解
  • springboot整合seata
  • 鸿蒙开发(NEXT/API 12)【二次向用户申请授权】程序访问控制
  • docker export/import 和 docker save/load 的区别
  • 明星周边销售网站开发:SpringBoot技术全解析
  • STM32+ADC+扫描模式
  • R语言绘制散点图
  • 安装最新 MySQL 8.0 数据库(教学用)
  • 微信小程序开发-配置文件详解
  • TCP/UDP初识
  • 【大数据】在线分析、近线分析与离线分析
  • 【unity进阶知识9】序列化字典,场景,vector,color,Quaternion
  • 传奇GOM引擎架设好进游戏后提示请关闭非法外挂,重新登录,如何处理?
  • OpenCV视频I/O(15)视频写入类VideoWriter之标识视频编解码器函数fourcc()的使用
  • rust log选型
  • 数据库-分库分表
  • 基于SSM的校园社团管理系统的设计 社团信息管理 智慧社团管理社团预约系统 社团活动管理 社团人员管理 在线社团管理社团资源管理(源码+定制+文档)
  • 【SVN】一文读懂Subversion(SVN)
  • nginx打包部署前端vue项目全过程【保姆级教程】
  • From SAM to CAMs
  • 【NLP自然语言处理】01-基础学习路径简介
  • ffmpeg取rtsp流音频数据保存声音为wav文件
  • 《数字图像处理基础》学习01-数字图像处理的相关基础知识
  • C#-泛型学习笔记
  • Java第二阶段---11封装---第四节 static 修饰符
  • 【C/C++】错题记录(五)
  • 关系数据库标准语言SQL(11,12)
  • Oracle 11g RAC 节点异常重启问题分析
  • vscode 中显示 pnpm : 无法加载文件 C:\Users\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本
  • C嘎嘎入门篇:类和对象番外(时间类)