Qt中XML文件创建及解析

这篇具有很好参考价值的文章主要介绍了Qt中XML文件创建及解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 环境部署

QT的配置文件中添加xml选项:

Qt中XML文件创建及解析,qt

 二 写入xml文件

头文件:#include <QXmlStreamWriter>

bool MyXML::writeToXMLFile()
{
    QString currentTime = QDateTime::currentDateTime().toString("yyyyMMddhhmmss");
    QString fileName = "./testWrite.xml";
    QFile file(fileName);
    //QIODevice::Truncate 以重写的方式打开,在写入新的数据时会将原有数据全部清除
    if(!file.open(QIODevice::WriteOnly | QIODevice::Text |QIODevice::Truncate)){
        qDebug()<<"open xml file failed!";
        return false;
    }


    QXmlStreamWriter write(&file);
    //设置自动格式化,包括自动换行缩进等
    write.setAutoFormatting(true);
    write.writeStartDocument("1.0");

    //写入常规信息
    write.writeStartElement("SomebodyInfo");
    write.writeTextElement("name","abby");
    write.writeTextElement("age",QString::number(18));
    write.writeTextElement("sex","girl");

    //写入数组
    for(int i = 0; i < 2; i++){
        write.writeStartElement("hobby");
        write.writeAttribute("No",QString::number(i));
        write.writeTextElement("name",QString("piano").append(QString::number(i)));
        write.writeEndElement();
    }
    write.writeEndElement();

    write.writeEndDocument();
    file.close();
    return true;
}
写入的文件如图:

Qt中XML文件创建及解析,qt 

三 解析xml文件

头文件:#include <QXmlStreamReader>

bool MyXML::parseXMLFile()
{
    QString fileName = "./testWrite.xml";
    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        qDebug()<<"open xml file failed!";
        return false;
    }

    QXmlStreamReader reader(&file);
    //过滤首行
    reader.readNext();
    while(!reader.atEnd()){
        reader.readNext();
        if(reader.isStartElement()){
            if(reader.name() == "name"){
                qDebug()<<"name = "<<reader.readElementText();
            }
            else if(reader.name() == "age"){
                qDebug()<<"age = "<<reader.readElementText();
            }
            else if(reader.name() == "sex"){
                qDebug()<<"sex = "<<reader.readElementText();
            }
            else if(reader.name() == "hobby"){
                parseHobby(reader);
            }
        }
        else if(reader.isEndElement()){
            break;
        }
    }
}

 解析其中的Hobby模块:

bool MyXML::parseHobby(QXmlStreamReader &reader)
{
    QVector<QString> hobbyVec;
    QString hobby;
    while(!reader.atEnd()){
        reader.readNext();
        if(reader.isStartElement()){
            if(reader.name() == "name"){
                hobby = reader.readElementText();
                hobbyVec.push_back(hobby);
            }
        }
        else if(reader.isEndElement()){
            for(int i = 0; i < hobbyVec.size();i++){
                 qDebug()<<"hobby i= "<<QString::number(i)<<"name = "<<hobbyVec[i];
            }
            break;
        }
    }
}

输出结果:

Qt中XML文件创建及解析,qt

 文章来源地址https://www.toymoban.com/news/detail-670409.html

到了这里,关于Qt中XML文件创建及解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++QT开发——Xml、Json解析

    可扩展标记语言,标准通用标记语言(Extensible Markup Language)的子集,简称XML,是一种定义电子文档结构和描述其内容的国际标准语言,被设计用来传输和存储数据。 可扩展标记语言与Access],Oracle]和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:

    2024年02月06日
    浏览(47)
  • qt读写xml文件

    Qt使用XML模块,在.pro文件中添加 QT += xml Qt 提供了三种读 写  XML 文档的方法: QXmlStreamReader / QXmlStreamWriter: 一种快速的基于流的方式访问良格式 XML 文档 , 特别适合于实现一次解析器(所谓“一次解析器”,可以理解成我们只需读取文档一次,然后像一个遍历器从头到尾一

    2024年02月11日
    浏览(44)
  • 利用Qt输出XML文件

    使用Qt输出xml文件 写入生成的xml文件如下:

    2024年02月02日
    浏览(52)
  • qt xml文件写入读取

    ****************************************************************************** QT       += core gui xml ****************************************************************************** #include \\\"mainwindow.h\\\" #include QDomDocument #include QTextStream #include QFile #include QDebug MainWindow::MainWindow(QWidget *parent)     : QMainWindow(parent) {    

    2024年02月09日
    浏览(42)
  • Qt XML文件读、写、修改

    1.1 使用的库 1.2 主体语句 头部创建: 内容创建: 1.3 详细例子说明 .cpp文件

    2024年02月11日
    浏览(45)
  • Qt读写ini配置文件(QSettings)、XML

    1、ini相关的 总结:Qt读写ini配置文件(QSettings) - 布丁Plus - 博客园 (cnblogs.com) Qt读写ini文件(含源码+注释)_qt ini文件读写_lw向北.的博客-CSDN博客 2、XML相关的 Qt读写XML文件(含源码+注释)_qt写xml_lw向北.的博客-CSDN博客

    2024年02月11日
    浏览(54)
  • Qt使用单例模式读取xml文件

    单例模式是指在整个系统生命周期内,保证一个类只能产生一个实例,确保该类的唯一性。 1、节省资源。一个类只有一个实例,不存在多份实例,节省资源。 2、方便控制。在一些操作公共资源的场景时,避免了多个对象引起的复杂操作。 在程序中多次使用同一个对象且作

    2024年02月20日
    浏览(51)
  • qt创建临时文件

    1、临时文件系统         在 Linux 系统中,创建临时文件系统很简单,执行如下指令即可:         挂载成功后,在 /mnt/tmp 这个挂载点下创建的所有文件都将会是临时文件, 也就是说:当电脑关机之后,这些文件就消失了。         这样做的好处是:不需要硬盘的

    2024年02月10日
    浏览(37)
  • VS QT 创建新的QT类后,编译报错无法解析的外部符号 “public: virtual struct QMetaObject const *

    问题描述: 新建QT的 Widgets 类,创建新的窗口  在编译的时候出现以下报错信息: 1vfhclassifydialog.obj : error LNK2001: 无法解析的外部符号 \\\"public: virtual struct QMetaObject const * __cdecl VfhClassifyDialog::metaObject(void)const \\\" (?metaObject@VfhClassifyDialog@@UEBAPEBUQMetaObject@@XZ) 1vfhclassifydialog.obj : error

    2024年02月02日
    浏览(31)
  • Qt中如何在qml文件中使用其他的qml文件并创建对象

    如果想使用其他的qml文件直接创建对象,必须先这样导入其qml文件并as成别名,才可以创建对象并使用它。 一、导入qml文件,例如: 二、使用别名创建对象 三、使用创建的对象 秋风写于淄博,业务交流与技术咨询:Q375172665

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包