Qt利用DOM类实现读取xml文件
目录
- 一、项目介绍
- 二、项目基本配置
- 三、UI界面设计
- 四、主程序实现
- 4.1 node.xml
- 4.2 pro文件
- 4.3 main.cpp
- 五、效果演示
一、项目介绍 利用DOM相关类读取xml文件。
Dom(Document Object Model,即文档对象模型)把XML文档转换成应用程序可以遍历的树形结构,这样便可以随机访问其中的节点。它的缺点是需要将整个XML文档读入内存,消耗内存较多。
在Qt中使用QDomProcessingInstruction类来表示XML说明,元素对应QDomElement类,属性对应QDomAttr类,文本内容由QDomText类表示。所有的DOM节点,比如这里的说明、元素、属性和文本等,都使用QDomNode类来表示,然后使用对应的isProcessingInstruction()、isElement()、isAttr()和isText()等函数来判断是否是该类型的元素,如果是,那么就可以使用toProcessingInstruction()、toElement()、toAttr()和toText()等函数转换为具体的节点类型。
二、项目基本配置 新建一个Qt案例,项目名称为“DomTest”,基类选择“QWidget”,取消创建UI界面复选框的选中状态,完成项目创建。
三、UI界面设计 无UI界面
四、主程序实现
4.1 node.xml
新建一个xml文件,内容为:
排量:2393ml价格:43.26万元 排量:1600ml价格:8.98万元 排量:1600ml价格:11.25万元 排量:1997ml价格:15.38万元
4.2 pro文件
在DomTest.pro文件中添加如下代码:
QT+=xml
4.3 main.cpp
核心代码如下:
//新建QDomDocument类对象,它代表一个XML文档QDomDocument doc; //建立指向“node.xml”文件的QFile对象QFile file("node.xml"); //以只读方式打开if(!file.open(QIODevice::ReadOnly)){qDebug()<<"无法打开"; return 0; }//将文件内容读到doc中QString errorMsg; if(!doc.setContent(&file,&errorMsg)){qDebug()<
运行结果:
“xml”如果不希望看到引号,可以进行如下修改:
“version=‘1.0’ encoding=‘UTF-8’”
qDebug() << qPrintable(firstNode.nodeName()); qDebug()<< qPrintable(firstNode.nodeValue());
运行结果:
xml查找id节点及其对应的名称:
version=‘1.0’ encoding=‘UTF-8’
//如果节点不为空while(!n.isNull()){if(n.isElement())//如果节点是元素{QDomElement e=n.toElement(); //将其转换为元素qDebug()<
运行结果:
“car”输出所有子节点的内容:
“1”
“car”
“2”
“car”
“3”
“car”
“4”
//如果节点不为空while(!n.isNull()){if(n.isElement())//如果节点是元素{QDomElement e=n.toElement(); //将其转换为元素QDomNodeList list=e.childNodes(); // 获得元素e的所有子节点的列表// 遍历该列表for(int i=0; i
这里使用了childNodes()函数获得了元素所有子节点的列表,然后通过遍历这个列表实现了遍历其所有子元素。运行结果:
“attrib”
“排量:2393ml”
“attrib”
“价格:43.26万元”
“attrib”
“排量:1600ml”
“attrib”
“价格:8.98万元”
“attrib”
“排量:1600ml”
“attrib”
“价格:11.25万元”
“attrib”
“排量:1997ml”
“attrib”
“价格:15.38万元”
五、效果演示 完整结果如下:
文章图片
【Qt利用DOM类实现读取xml文件】到此这篇关于Qt利用DOM类实现读取xml文件的文章就介绍到这了,更多相关Qt读取xml文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- Java利用Geotools实现不同坐标系之间坐标转换
- 使用分类权重解决数据不平衡的问题
- Jetpack|Compose 类型稳定性注解(@Stable & @Immutable)
- Javascript类和继承
- TypeScript|TypeScript对象的类型-接口
- typescript|TypeScript--笔记二(Map对象、联合类型、接口)
- json|如何将JSON对象转换为Typescript类
- 前端|typescript(四)ts中函数的参数和返回值的类型定义
- 前端|TypeScript函数参数和返回类型定义
- 【Java中的线程】java.lang.Thread|【Java中的线程】java.lang.Thread 类分析