Qt XML解析

Qt XML解析1、XML基础1.1、XML是什么?XML是一种可扩展标记语言,很类似于HTML,其文件仅仅是纯文本而已;XML的设计宗旨是传输数据,而非显示数

大家好,欢迎来到IT知识分享网。

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文件

Qt XML解析

2.2、导入xml模块

Qt XML解析

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

QT开发交流君羊:714620761

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 XML解析

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/61525.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信