读取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

相关文章

Python如何实现读取csv文件时忽略文件的编码格式

《Python如何实现读取csv文件时忽略文件的编码格式》我们再日常读取csv文件的时候经常会发现csv文件的格式有多种,所以这篇文章为大家介绍了Python如何实现读取csv文件时忽略文件的编码格式... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍我们再日常读取csv文件的时候经常

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

如何解决Pycharm编辑内容时有光标的问题

《如何解决Pycharm编辑内容时有光标的问题》文章介绍了如何在PyCharm中配置VimEmulator插件,包括检查插件是否已安装、下载插件以及安装IdeaVim插件的步骤... 目录Pycharm编辑内容时有光标1.如果Vim Emulator前面有对勾2.www.chinasem.cn如果tools工

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

Java导出Excel动态表头的示例详解

《Java导出Excel动态表头的示例详解》这篇文章主要为大家详细介绍了Java导出Excel动态表头的相关知识,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录前言一、效果展示二、代码实现1.固定头实体类2.动态头实现3.导出动态头前言本文只记录大致思路以及做法,代码不进

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

Python xmltodict实现简化XML数据处理

《Pythonxmltodict实现简化XML数据处理》Python社区为提供了xmltodict库,它专为简化XML与Python数据结构的转换而设计,本文主要来为大家介绍一下如何使用xmltod... 目录一、引言二、XMLtodict介绍设计理念适用场景三、功能参数与属性1、parse函数2、unpa