加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

qt解析xml文件

发布时间:2020-12-16 00:39:18 所属栏目:百科 来源:网络整理
导读:一、打开文件 void ABC :: openXml () //打开XML文件 { QFile xmlFile ( "./xml/menu.xml" ); if (! xmlFile . open ( QIODevice :: ReadOnly )) { qDebug ( "不能打开文件!" ); return ; //不能打开文件 } QDomDocument doc ; if (! doc . setContent ( xm

一、打开文件

void ABC::openXml() //打开XML文件

{ 
 QFile xmlFile("./xml/menu.xml"); 
 if(!xmlFile.open(QIODevice::ReadOnly)) 
 { 
 qDebug("不能打开文件!"); 
 return ; //不能打开文件 
 } 
 QDomDocument doc; 
 if (!doc.setContent(&xmlFile)) 
 { 
 qDebug("不能加载文件!"); 
 xmlFile.close(); 
 return; 
 } 
 this->readXmlMenu(doc); 
} 
 

二、解析菜单类型

 void ABC::readXmlMenu(QDomDocument doc) //解析菜单类型 
{ 
 QDomElement root = doc.documentElement(); 
 QDomNodeList nodelist = root.childNodes(); 
 for(unsigned i = 0; i < nodelist.length(); ++i) 
 { 
  QString title = nodelist.item(i).toElement().attribute("title"); 
 if(! title.isEmpty()) 
 { 
 treeMenu = new QTreeWidget(treeFrame); 
 treeMenu->setGeometry(0, i*150, 180, 150); 
 treeMenu->setColumnCount(1); 
 QStringList headers; 
 headers << title; 
 treeMenu->setHeaderLabels(headers); //设置标题 
 treeMenu->insertTopLevelItems(0, rootList); 
 this->readXmlItem(nodelist.item(i), treeMenu); 
 } 
 } 
} 
三、解析子菜单 
void ABC::readXmlItem(QDomNode node, QTreeWidget *treeItem) //解析菜单子级 
 
{  
 QDomNodeList nodelist = node.childNodes(); 
 for(unsigned i = 0; i < nodelist.length(); ++i) 
 { 
 QString title = nodelist.item(i).toElement().attribute("title"); 
 if(nodelist.item(i).toElement().attribute("isend") == "false") 
 { 
 rootItem = new QTreeWidgetItem(treeItem, QStringList(QString(title))); 
 rootList << rootItem; 
 treeMenu->expandAll(); //全部显示 
 this->readXmlItem(nodelist.item(i), treeItem); 
 } 
 else 
 { 
 QTreeWidgetItem *leaf = new QTreeWidgetItem(rootItem, QStringList(QString(title))); 
 rootItem->addChild(leaf); 
 } 
 } 
} 
四、xml文件 
<?xml version="1.0" encoding="utf-8"?> <menu> 
<menuType id="1" title="手机"> <listItem title="正在建设中..." isend = "false" url=""></listItem> </menuType> <menuType id="1" title="网络"> <listItem title="正在建设中..." isend = "false" url=""></listItem> </menuType> 
</menu> 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读