qt解析xml文件

一、打开文件

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> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值