• qt xml文件写入读取


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

    QT       += core gui xml

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

    #include "mainwindow.h"
    #include
    #include
    #include
    #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 <<":" <             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()
    {
    }

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


        zhangsan
        12
       
            100
            90
       

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

  • 相关阅读:
    C++重载运算符的规则
    QT day1
    【LeetCode】1608. 特殊数组的特征值
    【C语言 数据结构】顺序表的使用
    【算法】单调队列
    支付交易-交易执行器(一)
    Redis 与其他数据库的不同之处 | Navicat
    接口差异测试——Diffy工具
    数据库开发-MySQL基础DQL和多表设计
    R语言survminer包的ggsurvplot函数可视化生存曲线、legend.title指定图例的标题、legend.labs指定图例标签文本
  • 原文地址:https://blog.csdn.net/weixin_58619062/article/details/132741600