Qt编程5:使用QXmlStreamReader解析xml(简单应用)
发布时间:2020-12-15 22:41:10 所属栏目:百科 来源:网络整理
导读:1、准备xml文件包含内容如下: ?xml version="1.0" encoding="UTF-8"?MsgData id="1"titlexmlnamehello.xml/xmlnameownerzhj/owner/titleNumber123456/NumberNamezhangjie/Nameemailzhangjie@sina.cn/emailwebsitezhangjie.hello.cn/website/DataData id="2"
1、准备xml文件包含内容如下: <?xml version="1.0" encoding="UTF-8"?> <Msg> <Data id="1"> <title> <xmlname>hello.xml</xmlname> <owner>zhj</owner> </title> <Number>123456</Number> <Name>zhangjie</Name> <email>zhangjie@sina.cn</email> <website>zhangjie.hello.cn</website> </Data> <Data id="2"> <Number>789012</Number> <Name>haier</Name> <email>haier@sina.cn</email> <website>haier.sina.cn</website> </Data> <Data id="3"> <Number>345678</Number> <Name>sum</Name> <email>sum@sina.cn</email> <website>sum.sina.cn</website> </Data> <Data id="4"> <Number>901234</Number> <Name>niil</Name> <email>niil@sina.cn</email> <website>niil.sina.cn</website> </Data> </Msg> 2、QXmlStreamReader接口说明 创建一个QXmlStreamReader的类对象 通过name()得到当前节点名字 通过attributes()获取含有属性的节点的属性 3、实现代码如下: #include "mainwindow.h" #include "ui_mainwindow.h" #include “QXmlStreamReader” #include "QDebug" #include "QFile" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow) { ui->setupUi(this); //将xml文件读取数据 QFile file("hello.xml"); if(file.open(QIODevice::ReadOnly | QIODevice::Text)) { //构建QXmlStreamReader对象 QXmlStreamReader reader(&file); while(!reader.atEnd()) { //判断是否是节点的开始 if(reader.isStartElement()) { //将属性读出:例如 id="3" age = "23"> QXmlStreamAttributes attributes = reader.attributes(); //判断是否存在属性"id" if(attributes.hasAttribute("id")) { //将属性id追加textBrower ui->textBrowser->append(QString("id:%1").arg(attributes.value("id").toString())); } //判断当前节点的名字是否为Number if(reader.name() == "Number") ui->textBrowser->append(QString("Number:%1").arg(reader.readElementText())); //判断当前节点的名字是否为Name else if(reader.name() == "Name") ui->textBrowser->append(QString("Name:%1").arg(reader.readElementText())); //判断当前节点的名字是否为email else if(reader.name() == "email") ui->textBrowser->append(QString("email:%1").arg(reader.readElementText())); //判断当前节点的名字是否为website else if(reader.name() == "website") ui->textBrowser->append(QString("website:%1").arg(reader.readElementText())); } //节点结束、并且节点名字为Data(含有子节点) else if(reader.isEndElement() && reader.name() == "Data") { ui->textBrowser->append("--------------------"); ui->textBrowser->append(""); } reader.readNext(); } file.close(); } else { qDebug()<<"Open file hello.xml failure"; } } MainWindow::~MainWindow() { delete ui; }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |