Qt 读写xml文件(QDomDocument)

一、简述

XML是一种标记语言,被设计用来结构化存储以及传输信息,是一种常用的文档数据结构。
就我个人而言,Qt下读写XML格式文件可以有三种方法:
一是使用纯C++的rapidxml开源库。优点是速度快,媲美strlen()的速度;缺点是处理中文比较麻烦,编码只有ANSI格式。
二是使用QXmlStreamReader类,适当结合QXmlQuery类。优点是灵活性强,节约内存;缺点是理解起来相对较难,还需要一点数据库语言的知识。
三是使用QDomDocument类。是Qt下读写xml文件传统而普遍的做法,缺点就是如果读写的文件很大,会消耗大量的内存空间(必须包含Qt XML模块)。
QDomDocument类可以理解为一个QFile,这个类的对象代表了整个文件,通常也是一个xml文件的主节点。还需使用到的类有QDomNode(节点基类)、QDomElement(节点类)、QDomText(内容)、QDomAttr(属性)、QDomProcessingInstruction(文件头)。

三、读写样式

<?xml version='1.0' encoding='utf-8'?>
<日销售清单>
    <日期 date="2020-05-29">
        <时间 time="21:27:41">
            <厂家>二汽神龙</厂家>
            <品牌>毕加索</品牌>
            <报价>39</报价>
            <数量>1</数量>
            <金额>50</金额>
        </时间>
        <时间 time="21:27:51">
            <厂家>二汽神龙</厂家>
            <品牌>毕加索</品牌>
            <报价>39</报价>
            <数量>1</数量>
            <金额>50</金额>
        </时间>
        <时间 time="21:27:57">
            <厂家>二汽神龙</厂家>
            <品牌>毕加索</品牌>
            <报价>39</报价>
            <数量>1</数量>
            <金额>50</金额>
        </时间>
    </日期>
</日销售清单>

头文件

#ifndef DOCXML_H
#define DOCXML_H

#include <QString>
#include <QStringList>
#include <QDomDocument>
#include <QDomElement>

class DocXml
{
   
public:
    DocXml();

    static void CreateXml(const QString &filePath);     //创建xml 空文件
    static void AppendXml(const QString &filePath,QStringList list);
    static void WriteXml(QDomDocument &doc,QDomElement &root,QStringList &list);

    static void ReadXml(const QString &filePath,QStringList &fList,
                        QStringList &bList, QStringList &pList,
                        QStringList &nList, QStringList &tList);
};
#endif // DOCXML_H

创建空的XML文件

#include "docxml.h"
#include <QFile>
#include <QDomDocument>      //文件
#include <QDomProcessingInstruction>    //格式头部
#include <QDomElement>  //元素
#include <QTextStream>
#include <QDebug>
#include <QDateTime>

#define cout qDebug() << "[" << __FILE__ << ":" << __LINE__ &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值