文档详情

Qt解析XML与JSON.doc

发布:2017-07-20约字共4页下载文档
文本预览下载声明
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 五、效果 qt解析json 首先在工程文件中加 QT??????? += script 然后头文件加 #include QtScript 然后解析 QString str = {\name\:\xiaotang\, \age\:\23\, \chi\:[{\a\:\aa\, \b\:\bb\}, {\a\:\aaa\, \b\:\bbb\}]}; QScriptEngine engine; QScriptValue sc = engine.evaluate(v
显示全部
相似文档