读取xml的内容并显示在textEdit中,导出xml文件

2024-08-30 22:20

本文主要是介绍读取xml的内容并显示在textEdit中,导出xml文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用QXmlStreamReader方法读取xml文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStandardItemModel>
#include <QtXml>
std::vector<std::map<QString, QString>> dataVector;MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}// 按钮的槽函数
void MainWindow::on_pushButton_clicked()
{QString FilePath = "E:/QT_project/test_xml/ChairXML.xml";ShowContent(FilePath);
}// 读取某个路径的xml文件
void MainWindow::ShowContent(QString FilePath)
{LoadXmlContent(FilePath);
}// 使用QXmlStreamReader方法,并将所有信息显示在textEdit中
bool MainWindow::LoadXmlContent(QString FilePath)
{QFile file(FilePath);if (!file.open(QIODevice::ReadOnly)) {qDebug() << "Can not open file。";return false;}dataVector.clear();QXmlStreamReader reader;//创建一个阅读器reader.setDevice(&file);//设置需要读取的文件int count = 0;while(!reader.atEnd())//如果不到结尾{QXmlStreamReader::TokenType type=reader.readNext();//获取一个记号if(type==QXmlStreamReader::StartDocument)//读取XML说明{qDebug()<<reader.documentVersion()<<"  "<<reader.documentEncoding();//读取版本号和编码类型}if(type==QXmlStreamReader::StartElement)//获取元素{count++;// 将标签显示在ui上QString key = reader.name().toString();ui->textEdit->append(key);if(reader.attributes().hasAttribute("id"))//如果有属性  {count++;// qDebug()<<reader.attributes().value("id"); // 打印输出属性QString value = reader.attributes().value("id").toString();ui->textEdit->append(value);}}if(type==QXmlStreamReader::EndElement)//获取结束元素{qDebug()<<reader.name();QString name = reader.name().toString();ui->textEdit->append(name);}if(type==QXmlStreamReader::Characters&&!reader.isWhitespace()){count++;// qDebug()<<reader.text(); //打印读取内容QString value = reader.text().toString();ui->textEdit->append(value);}}if(reader.hasError()){qDebug()<<"error:"<<reader.errorString();  // 打印报错信息}file.close();//关闭文件
}

导出xml文件


// 保存按钮,导出XML文件
void MainWindow::output_xml()
{QFile file("/home/user/output_task.xml");if(!file.open(QIODevice::WriteOnly|QIODevice::Text)){qDebug()<<"文件写入失败!";}QXmlStreamWriter Writer;Writer.setDevice(&file);//获取流Writer.setAutoFormatting(true);Writer.writeStartDocument();//添加XML说明(版本号和编码信息/*  XML写入信息主要用的函数Writer.writeStartElement("节点1"); 开始一个节点Writer.writeAttribute("节点1", "信息0");//开始一个带有信息的节点Writer.writeTextElement("节点1的信息", "信息1");Writer.writeTextElement("节点1的信息", "信息2");Writer.writeEndElement();//结束一个节点(开始和结束必须一一对应)*/// 写入数据Writer.writeStartElement("学校信息");//写入节点// 示例1Writer.writeStartElement("人物信息");Writer.writeTextElement("人物ID", "1"); //写入节点属性,只能放QString!Writer.writeTextElement("人物名称", "某人");Writer.writeTextElement("人物类型", "类型1");Writer.writeTextElement("人物说明", "无说明");Writer.writeEndElement();// 示例2Writer.writeStartElement("工作信息");Writer.writeTextElement("工作名称", "IT工作者");Writer.writeTextElement("所属省份", "湖南省");Writer.writeTextElement("工作类型", "算法");Writer.writeStartElement("工作所处位置的经纬度"); //可以在节点里再嵌入节点Writer.writeTextElement("经度", "东经101");Writer.writeTextElement("纬度", "北纬202");Writer.writeEndElement();Writer.writeEndElement();Writer.writeEndElement();  //结束节点//结束整个的文件的编辑Writer.writeEndDocument();file.close();//关闭文件
}

导出的xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<学校信息><人物信息><人物ID>1</任务组ID><人物名称>某人</任务组名称><人物类型>类型1</任务组类型><人物说明>无说明</任务组说明></人物信息><工作信息><工作名称>IT工作者</部队名称><所属省份>湖南省</所属国家><工作类型>算法</部队类型><工作所处位置的经纬度><经度>东经101</经度><纬度>北纬202</纬度></工作所处位置的经纬度></工作信息>
</学校信息>

这篇关于读取xml的内容并显示在textEdit中,导出xml文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122094

相关文章

springboot中配置logback-spring.xml的方法

《springboot中配置logback-spring.xml的方法》文章介绍了如何在SpringBoot项目中配置logback-spring.xml文件来进行日志管理,包括如何定义日志输出方式、... 目录一、在src/main/resources目录下,也就是在classpath路径下创建logba

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

在C#中读取文件的六种主流方法详解

《在C#中读取文件的六种主流方法详解》在C#中读取文件有多种方法,不同方式适用于不同场景(小型文件、大型文件、文本文件或二进制文件),本文给大家介绍了6种主流方法以及其适用场景,需要的朋友可以参考下... 目录方法1:File.ReadAllText(读取整个文本文件)方法2:File.ReadAllLin

使用C#导出Excel数据并保存多种格式的完整示例

《使用C#导出Excel数据并保存多种格式的完整示例》在现代企业信息化管理中,Excel已经成为最常用的数据存储和分析工具,从员工信息表、销售数据报表到财务分析表,几乎所有部门都离不开Excel,本文... 目录引言1. 安装 Spire.XLS2. 创建工作簿和填充数据3. 保存为不同格式4. 效果展示5

Python实现Word文档自动化的操作大全(批量生成、模板填充与内容修改)

《Python实现Word文档自动化的操作大全(批量生成、模板填充与内容修改)》在职场中,Word文档是公认的好伙伴,但你有没有被它折磨过?批量生成合同、制作报告以及发放证书/通知等等,这些重复、低效... 目录重复性文档制作,手动填充模板,效率低下还易错1.python-docx入门:Word文档的“瑞士

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放