Qt编程之Xml文件的读取

目录

一、xml的格式说明

二、QT中读取xml的类与常用函数

三、代码思路

四、代码实现

五、结果展示


   XML最主要的功能是数据传输,有的时候可以当一个小型的数据库来使用,因为其定义标签高度自由,所以在一些软件需要经常修改的配置变量常常采用xml格式的文件来保存,在需要用到该变量时在事先写好的xml类型文件中进行修改。

  本篇博客给出的代码从如何完整读出一个xml文件的思路出发。

  逻辑难度不大,但需要读者耐心琢磨。方能写出一个属于自己的读取xml的通用函数。

  如果读者对xml格式已经如数家珍,请跳过xml的格式说明,直接进入思路分析

一、xml的格式说明

1.xml的头声明在语法上可有可无,但标准化的书写规范要求一定要有头声明

<?xml version = "1.0" encoding = "utf-8"?>

需要注意的是头声明的前后一定要有问号(?) ,否则在读取xml文件时会无法读取这条语句而造成读取失败。

2.xml有一个根节点,此处我们定义为root,需要强调的是任意节点都可以自定义,其标签定义是高度自由的。

<?xml version = "1.0" encoding = "utf-8"?>
<root>
  <user>章鱼</user>
    <homeland id= "1">中国</homeland>
  <age>18</age>
</root>

根节点下的user和age称作子节点,user相对于homeland来说又是homeland的根节点。所以xml是一个树状结构,什么时候是根什么时候为子都是相对而言,但需要牢记xml文件只有唯一的一个根节点挂着所有的子节点。

图1.简单的树状结构
图1.简单的树状结构

二、QT中读取xml的类与常用函数

  QT中提供了一个读取xml的类QXmlStreamReader,该类在使用时就是创建一个读取xml文件的迭代器变量。

QXmlStreamReader xmlReader(&filename); //xmlReader就是一个迭代器

  常用的一些API函数如下:
 1.通过readNextStartElement()挨个读入节点
 2.通过isStartElement()和isEndElement()判断是节点的开始和结束
 3.通过name()得到当前节点的名字
 4.通过readElementText()访问当前节点的内容
 5.通过attributes()获取还有属性节点的属性
 6.通过atEnd()判断XML文件是否结束
 7.通过hasError()判断XML文件是否出错

三、代码思路

  在了解xml的格式后,从人的角度出发,我们通常是看根节点,然后看根节点下的节点,读完一整个根节点的内容之后再去看下一个根节点。这样描述有些混乱,读者可以根据上述图1来进行理解。从根节点出发,然后读左一节点,读完左一节点后读中间节点,读完中间节点后读右一节点。

  那么转换到机器中(代码)我们需要怎么去做呢?既然是树状结构,且要一段一段的去读,应该只要设置一个迭代器,

  • 17
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值