QT4.8xml写入(2)

搞个简单点的xml写入,可以直接运行的

#-------------------------------------------------
#
# Project created by QtCreator 2022-10-31T14:10:02
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = untitled
TEMPLATE = app


SOURCES += main.cpp\
        widget.cpp

HEADERS  += widget.h

FORMS    += widget.ui

QT += xml

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT
    
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    void init();
    void write();
private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

#include "widget.h"
#include "ui_widget.h"
#include <QtXml/QDomDocument>
#include <QtXml/QDomElement>
#include <QtXml/QDomNode>
#include <QtXml/QDomNodeList>
#include <QtXml/QDomText>
#include <QFile>
#include <QMessageBox>
#include <QTextStream>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    init();
    write();

     return;

}

void Widget::write()
{
    QFile file("food.xml");
    if(!file.open(QIODevice::ReadOnly)){
        QMessageBox::warning(nullptr,QObject::tr("fail"),QObject::tr("open food.xml fail!"),QMessageBox::Ok);
        return;
    }

     QDomDocument domDocument;
     if (!domDocument.setContent(&file, true)){
         QMessageBox::warning(nullptr,QObject::tr("fail"),QObject::tr("domDocument.setContent fail!"),QMessageBox::Ok);
         file.close();
         return;
     }
     QDomDocument xDoc;
     QDomElement docElem = domDocument.documentElement();
     QDomNode lastNode = docElem.lastChild();

     //在lastitem上添加一个节点
     QDomElement NodeItem = domDocument.createElement("Node");

     QDomElement SoftNameItem = domDocument.createElement("SoftName");

     SoftNameItem.appendChild(xDoc.createTextNode(""));

     NodeItem.appendChild(SoftNameItem);

     //添加元素节点到父节点
     docElem.appendChild(NodeItem);
     file.close();

     QFile fileModify("food.xml");
     if (!fileModify.open(QFile::WriteOnly | QFile::Text)){
         QMessageBox::warning(nullptr,QObject::tr("fail"),QObject::tr("fileModify food.xml fail"),QMessageBox::Ok);
         return;
     }

     QTextStream out(&fileModify);
     domDocument.save(out,4);
     fileModify.close();

     return;


}

void Widget::init()
{
    QFile file("food.xml");

    if(file.open(QIODevice::ReadOnly)){
        file.close();
        return;
    }

    if(!file.open(QIODevice::ReadWrite)){
        QMessageBox::warning(nullptr,QObject::tr("fail"),QObject::tr("open food.xml fail!"),QMessageBox::Ok);
        return;
    }

     QDomDocument domDocument;
     QDomProcessingInstruction pro = domDocument.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
     domDocument.appendChild(pro);

     QDomElement root = domDocument.createElement("hard");
     domDocument.appendChild(root);

     QTextStream out(&file);
     domDocument.save(out,4);
     file.close();
}

Widget::~Widget()
{
    delete ui;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_小白鱼儿_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值