需求:
使用QXMLStreamWriter,将如下界面的结构写入XML文件。
效果:
思路:
1、先构造树形控件treeWidget.
2、使用QXMLStreamWriter,写XML文件。
源码:
#include <QApplication> #include <QXmlStreamWriter> #include <QFile> #include <QDebug> #include <QTreeWidget> #include <QTreeWidgetItem> #include <QHeaderView> void populateTree(QTreeWidget *treeWidget)//构造树 { treeWidget->setHeaderLabels(QStringList()<<"Terms" <<"Pages"); treeWidget->header()->setSectionResizeMode(QHeaderView::Stretch); treeWidget->setwindowTitle(QObject::tr("XML Stream Writer")); treeWidget->show(); (void) new QTreeWidgetItem(treeWidget,QStringList() << "sidebearings" << "10,34-35,307-308"); QTreeWidgetItem *subTerm = new QTreeWidgetItem(treeWidget,QStringList() << "subtraction"); (void) new QTreeWidgetItem(subTerm,QStringList() << "of pictures" << "115,244"); (void) new QTreeWidgetItem(subTerm,QStringList() << "of vectors" << "9"); } void writeIndexEntry(QXmlStreamWriter *xmlWriter,QTreeWidgetItem *item ) { xmlWriter->writeStartElement("entry");; xmlWriter->writeAttribute("term",item->text(0)); QString pageString = item->text(1); if(!pageString.isEmpty()) { QStringList pages = pageString.split(","); foreach (QString page,pages) { xmlWriter->writeTextElement("page",page); } } for(int i=0; i<item->childCount() ; ++i) writeIndexEntry(xmlWriter,item->child(i)); xmlWriter->writeEndElement(); } bool writeXml(const QString &fileName,QTreeWidget *treeWidget) { QFile file(fileName); if(!file.open(QFile::writeonly | QFile::Text)) { qDebug()<< "Error: Cannot write file " <<fileName <<": " <<file.errorString(); return false; } QXmlStreamWriter xmlWriter(&file); xmlWriter.setAutoFormatting(true); xmlWriter.writeStartDocument(); xmlWriter.writeStartElement("bookindex"); qDebug()<<"1: "<<treeWidget->topLevelItemCount(); for(int i=0 ; i< treeWidget->topLevelItemCount() ; ++i) writeIndexEntry(&xmlWriter,treeWidget->topLevelItem(i)); xmlWriter.writeEndDocument(); file.close(); if(file.error()) { qDebug()<<"Error: Cannot write file " << fileName << ": " << file.errorString(); return false; } return true; } int main(int argc,char *argv[]) { QApplication a(argc,argv); QTreeWidget treeWidget; populateTree(&treeWidget); writeXml("out1.xml",&treeWidget); return a.exec(); }
原文地址:https://www.jb51.cc/xml/294675.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。