qt xml文件写入读取

******************************************************************************

QT       += core gui xml

******************************************************************************

#include "mainwindow.h"
#include <QDomDocument>
#include <QTextStream>
#include <QFile>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // 创建文档
    QDomDocument docWrite;

    // 创建根节点
    QDomElement rootWrite = docWrite.createElement("Student");

    // 添加根节点到文档中
    docWrite.appendChild(rootWrite);

    // 创建子节点并设置属性和文本内容
    QDomElement name = docWrite.createElement("Name");
    QDomText text = docWrite.createTextNode("zhangsan");
    name.appendChild(text);

    // 将子节点添加到根节点中
    rootWrite.appendChild(name);

    QDomElement age = docWrite.createElement("Age");
    text = docWrite.createTextNode("12");
    age.appendChild(text);
    rootWrite.appendChild(age);

    QDomElement course = docWrite.createElement("Course");
    rootWrite.appendChild(course);

    QDomElement math = docWrite.createElement("Math");
    text = docWrite.createTextNode("100");
    math.appendChild(text);
    course.appendChild(math);

    QDomElement chinese = docWrite.createElement("Chinese");
    text = docWrite.createTextNode("90");
    chinese.appendChild(text);
    course.appendChild(chinese);

    // 保存文档到文件
    QFile fileWrite("test.xml");
    if(fileWrite.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        QTextStream stream(&fileWrite);
        stream << docWrite.toString(4);
        fileWrite.close();
    }

    //
    QDomDocument docRead;

    QFile fileRead("test.xml");
    QString error = "";
    int row = 0, column = 0;

    if (fileRead.open(QIODevice::ReadOnly))
    {
        if(!docRead.setContent(&fileRead, false, &error, &row, &column))
        {
            qDebug() << "parse fileRead failed:" << row << "---" << column <<":" <<error;
            fileRead.close();
        }
        else
        {
            fileRead.close();

            QDomElement rootRead = docRead.documentElement();
            QDomNode nodeRead = rootRead.firstChild();

            while(!nodeRead.isNull())
            {
                QDomElement element = nodeRead.toElement();

                if(!element.isNull())
                {
                    qDebug() << element.tagName() << ":" << element.text();

                    QDomNode nodeReadSon = element.firstChild();

                    while(!nodeReadSon.isNull())
                    {
                        QDomElement elementSon = nodeReadSon.toElement();

                        if(!elementSon.isNull())
                        {
                            qDebug() << "---" << elementSon.tagName() << ":" << elementSon.text();
                        }
                        nodeReadSon = nodeReadSon.nextSibling();
                    }
                }
                nodeRead = nodeRead.nextSibling();
            }
        }
    }
}

MainWindow::~MainWindow()
{
}

******************************************************************************

<Student>
    <Name>zhangsan</Name>
    <Age>12</Age>
    <Course>
        <Math>100</Math>
        <Chinese>90</Chinese>
    </Course>
</Student>

"Name" : "zhangsan"
"Age" : "12"
"Course" : "10090"
--- "Math" : "100"
--- "Chinese" : "90"

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值