QT学习笔记(14)-读取文件路径并写入xml文件

前言

读写普通的xml文件从百度上面搜可以搜到很多,而此篇博客与大部分上面所搜到的读写都不同。此篇博客增加了一个额外的需求将一个路径下面所有的文件以及文件夹通过字符串的方式传递给下面的函数,然后实现将文件路径写入指定的文件中。

读取文件路径并写入xml文件

使用QXmlStreamWriter

闲言碎语

我这次所犯的错误未误以为QXmlStream能够实现多次读写,也就是不断的打开文件,并链接相应的info。当你在百度的时候,你会得到两种读写xml文件的方式,而目测起来会以后地一种使用QXmlStream的方式会更加方便与简洁,然后,一旦你的需求复杂起来,你就会发现,还是使用QDomDocument好用的。所以,以下会稍微介绍以下两种方法,主要还是在第二种。第一种的读写方式可以参考使用Qt5的QXmlStreamWriter和QXmlStreamReader实现xml文件的写入和读取

知识点

1)快速解析:QXmlStreamReader 、 QXmlStreamWriter。这是一种快速的基于流的方式访问 XML 文档,它只需读取文档一次,然后像一个遍历器从头到尾一次性处理 XML 文档,期间不会有反复的情况,也就是不会读完第一个标签,然后读第二个,读完第二个又返回去读第一个。

QXmlStreamReader使用了递增式的解析器,适合于在整个XML文档中查找给定的标签、读入无法放入内存的大文件以及处理XML的自定义数据。每次QXmlStreamReader的readNext()函数调用,解析器都会读取下一个标记,按照返回的标记类型进行处理。
QXmlStreamWriter类提供了简单流接口的XML写入器,写入XML文档只需要调用相应的标记写入函数来写入相关数据。

只能实现这样的效果
在这里插入图片描述
而实际上,Info1的内部是还有文件以及文件夹的,而此时用递归却遍历不到内部了。
2)DOM树读写:QDomDocument。将整个 XML 文档读入内存,构建成一个树结构,允许程序在树结构上向前向后移动导航,这是与另外两种方式最大的区别,也就是允许实现多次读写。DOM 方式带来的问题是需要一次性将整个 XML 文档读入内存,因此会占用很大内存;但是因为储存在内存里,所以实现频繁修改比较方便。
下面是我实现前言中所说功能的主要的一些函数。
code:

#include "MainWindow.h"

CMainWindow::CMainWindow(QWidget *parent)
    : QMainWindow(parent)
{
   
    saveProject();
}

CMainWindow::~CMainWindow()
{
   
}
//本小类用于保存工程的初始化
void CMainWindow::saveProject()
{
   
    QString fileName="E:/Test/test.xml";//这是要写入的目标文件。
    QDomDocument doc;
    QString path = "E:/Test";//这是要进行检测的目标文件夹
    saveSelectedToFile(fileName);
}
//本小类用于将所得到的链接好的doc写入xml文件中
void CMainWindow::saveSelectedToFile(QString fileName)
{
   
    QDomDocument doc;
    QString path = "E:/Test";
    saveSelectedToDoc(doc,path);
    QFile file(fileName);

    bool bSuccess = file.open(QIODevice::WriteOnly);
    if(bSuccess == false)
    {
   
        file.close();
        return;
    }
    QTextStream out(&file);
    m_doc.save(out, 4);

    file.close();
}


//本小类用于将xml文件的一些头部写入xml文件中
void CMainWindow::saveSelectedToDoc(QDomDocument
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值