Qt XML解析
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模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
相关文章
- [Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档
- Qt-Qt在Debug或者Release模式下怎么进入断点?调试程序无法进入断点?答案就在此处!
- Qt中使用main函数中的参数
- Qt对QTreeView和QFileSystemModel的使用,文件路径返回各种值
- Qt操作XML文件
- Qt音视频开发31-qmedia内核qt5/qt6播放视频
- Qt编写自定义控件10-云台仪表盘
- Qt编写自定义控件4-旋转仪表盘
- Qt编写软件运行时间记录(开源)
- QT program tips
- Qt模式视图设计
- Qt线程(两种QThread类的详细使用方式)
- Qt css样式大全(整理版)
- Qt项目MVC架构
- Qt多线程:使用互斥锁
- Ubuntu18下安装Qt