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"

相关推荐
MOONICK1 分钟前
QT的UI开发框架
qt·ui
郝学胜-神的一滴12 分钟前
Horse3D 游戏引擎研发笔记(七):Clydesdale——从流式日志到多输出订阅
c++·qt·unity·游戏引擎·图形渲染·unreal engine·opengl
丰锋ff13 小时前
基于 Qt 的智慧社区物业管理系统
开发语言·qt
程与留15 小时前
05_Qt 核心模块概览——Qt Core、Gui、Widgets、Quick 的职责划分
c++·qt
buhuizhiyuci16 小时前
【QT-百日筑基篇】修真世界摸爬滚打多年,终于黄天不负有心人,突破炼器中期——常用控件QWight的属性
开发语言·c++·qt·gui·图形化
Littlehero_12118 小时前
QT自定义控件之热换站系统(源码开源)
开发语言·qt
Quz1 天前
QML MouseArea 鼠标拖拽与滚轮缩放
qt
Quz1 天前
QML MouseArea 事件传递、自定义按钮
qt
小庞在加油1 天前
WinDbg实战:QT/跨平台项目死锁与无响应问题排查指南
开发语言·qt·windbg·工具
hy.z_7772 天前
【QT】1.QT初识(背景介绍、搭建开发环境、Qt Creator、程序、项目文件解析、编程注意事项)
qt