zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Qt XML解析

QtXML 解析
2023-09-14 09:05:11 时间

1、XML基础

1.1、XML是什么?

XML是一种可扩展标记语言,很类似于HTML,其文件仅仅是纯文本而已;

XML的设计宗旨是传输数据,而非显示数据;

1.2、XML语法

XML文档形成了一棵“倒挂的树结构”,从“根部”开始,然后扩展到“枝叶”;

XML标签一定是成对出现的,必须有根元素;

XML标签大小写敏感,标签和属性都没有预定义,所以可以自行取标签名;

XML的属性值需加引号,单、双都可,如果属性值中包含双引号,则使用单引号或实体引用,尽量不使用属性;

XML注释:​​<!-- This is a comment -->​​;

XML中,空格会被保留;

XML命名规则:名称可以含字母、数字以及其他字符,但是不能以数字或标点符号开始,且不能包含空格;

XML文档标准格式:

<? xml version="1.0" encoding="UTF-8" ?>    <!-- 说明版本号和编码格式 -->
<root>                    <!-- 根元素 -->
  <child>                  <!-- 儿子元素 -->
    <sub_child>              <!-- 孙子元素 -->    
      ...
    </sub_child>
  </child>
</root>

检验XML文档格式是否正确:最简单的办法就是用浏览器打开,如果能看到内容,则说明没有问题;反之则有问题。

2、Qt解析XML

2.1、编写XML文件

 

2.2、导入xml模块

2.3、使用​​QXmlStreamReader​​读取XML

void MainWindow::on_pushButton_clicked()
{
    QFile file(QCoreApplication::applicationDirPath() + "/test.xml");

    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return;

    QXmlStreamReader reader(&file);
    while(!reader.atEnd()) { //如果没有读到最后一行,就一行行往下读

        if(reader.isStartElement()){ //如果标签是起始标签
            if(reader.name() == "person"){ //如果标签名是person
                QXmlStreamAttributes attributes = reader.attributes(); //获取该标签的所有属性
                if(attributes.hasAttribute("id")){ //如果有“id”属性
                    ui->textEdit->append("person: "+attributes.value("id").toString()); //获取“id”属性的值
                }
            }

            if(reader.name() == "name"){ //如果标签名是“name”
                ui->textEdit->append("name: "+reader.readElementText()); //读取标签文本
            }
            if(reader.name() == "sex"){ //如果标签名是“sex”
                ui->textEdit->append("sex: "+reader.readElementText()); //读取标签文本
            }
            if(reader.name() == "age"){ //如果标签名是“age”
                ui->textEdit->append("age: "+reader.readElementText()); //读取标签文本
            }
        }
        else if(reader.isEndElement() && reader.name() == "person"){ //如果标签是结束标签并且标签名是person
            ui->textEdit->append("----------------------------------------");
        }

        reader.readNext();
    }

    file.close();
}

2.4、效果展示

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓