qt_c++_xml简单示范demo

迅雷链接

链接:https://pan.xunlei.com/s/VO8bJODxPfPHE0x3nfUa2KZ1A1?pwd=tuxq#

复制这段内容后打开手机迅雷App,查看更方便

复制代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTextCodec>


#include <QFile>
#include <QDomDocument>
#include <QTextStream>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE


void createXML(QString filePath);
void loadXml(QString xmlName);

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include<QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);



    QString path="C:/Users/36075/Desktop/QtC_xml/test.xml";
    createXML(path);
    loadXml(path);
}

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


void createXML(QString filePath)
{

           QFile file(filePath);

               bool isOk = file.open(QIODevice::WriteOnly);//以只写方式打开文件 isOk用来判断是否打开成功
         //      打开成功的话:
        //       第一步:创建XML文档对象,包含头文件#include <QDomDocument>  //文件
                 QDomDocument doc;
                 QDomProcessingInstruction instruction; //添加处理命令
                     instruction=doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");
                     doc.appendChild(instruction);

                 QDomElement root = doc.createElement("bookstore");
                     doc.appendChild(root);

                             QDomElement book = doc.createElement("book");
                             book.setAttribute("category", "C++");	//生成category节点
                             root.appendChild(book);

                             QDomElement price= doc.createElement("price");
                             book.appendChild(price);
                             QDomText text = doc.createTextNode("98");
                             price.appendChild(text);

                             book = doc.createElement("book");
                             book.setAttribute("category", QString::fromLocal8Bit("语文"));
                             root.appendChild(book);

                             price= doc.createElement("price");
                                 text = doc.createTextNode("100");
                                 price.appendChild(text);
                             book.appendChild(price);


                 QTextStream stream(&file);
                     stream.setCodec("UTF_8");
                     doc.save(stream,4,QDomNode::EncodingFromTextStream);
                     file.close();

}


void loadXml(QString xmlName)
{
    QFile file(xmlName);
    if(!file.open(QFile::ReadOnly | QFile::Text))
    {
        return;
    }

    QString strError;
    int errorLine;
    int errorColumn;
    QDomDocument doc;
    if(!doc.setContent(&file, false, &strError, &errorLine, &errorColumn)){
        return;
    }
    QDomElement root = doc.documentElement();
    if(root.tagName() == "bookstore")
    {
        QDomNode book = root.firstChild();
        while(!book.isNull())
        {
            if(book.toElement().tagName() == "book")
            {
                QString str = book.toElement().attribute("category");	//获取category属性内容
                qDebug()<<str;
                QDomNode node = book.firstChild();
                while(!node.isNull())
                {
                    if(node.toElement().tagName() == "price")
                    {
                        QString price = node.toElement().text();
                        qDebug()<<price;
                    }
                    node = node.nextSibling();
                }
            }
            book = book.nextSibling();
        }
    }
}
相关推荐
神仙别闹14 分钟前
基于C++实现(控制台)景区旅游管理系统
开发语言·c++·旅游
hold?fish:palm12 小时前
kv存储主从复制的设计与实现
c++·redis·后端
啦啦啦啦啦zzzz12 小时前
算法:贪心算法
c++·算法·leetcode·贪心算法
charlie11451419112 小时前
现代C++工程实践 WeakPtr 实战(三):WeakPtrFactory 与「最后成员」惯用法
开发语言·c++·开源项目·现代c++
JetComXCpp14 小时前
给 Win32 窗口加上毛玻璃效果——纯 D3D11 实现,零依赖
c++
ysa05103016 小时前
【板子】二分答案(最大最小?)
c++·笔记·算法·板子
是多巴胺不是尼古丁16 小时前
C++基础知识
开发语言·c++
stolentime17 小时前
SP8549 MAIN75 - BST again题解
c++·算法·二叉树·深度优先·图论·记忆化搜索·组合数学
ziguo112217 小时前
C/C++ 错误处理全解:从 errno 到 C++ 异常
linux·c语言·c++·windows·visual studio
stolentime17 小时前
AT_pakencamp_2020_day1_k Gcd of Sum题解
c++·算法