在前面两篇中,大致完成了一个文件IO的读和写操作。前面两篇文章链接
http://blog.csdn.net/z609932088/article/details/71488250
http://blog.csdn.net/z609932088/article/details/71598414
今天这个是,今天主要是写了怎么把配置文件写入到XML中
上今天的详代码
QJsonObject DLFileIOSystem::DLReadXML() { qDebug()<<"XML 读取函数执行"; QFile file("./config.xml"); //打开XMl文件 if(!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::information(NULL,"Title","Open File False"); //如果打开失败则提示 } QDomDocument doc; //把文件内容写入到doc中 doc.setContent(&file); file.close(); //关闭文件 QDomElement root = doc.documentElement(); QDomNode node = root.firstChild(); while (!node.isNull()) { QDomElement element = node.toElement(); if(!element.isNull()) { QDomNamedNodeMap list = element.attributes(); for(int i = 0; i<list.count(); i++) { xmlDate.insert(list.item(i).nodeName(),list.item(i).nodeValue()); qDebug()<<list.item(i).nodeName(); } } node = node.nextSibling(); } return xmlDate; } bool DLFileIOSystem::DJWriteXML() { qDebug()<<"XML 读取函数执行"; QFile file("./config.xml"); //打开XMl文件 if(!file.open(QFile::ReadWrite | QFile::Text | QFile::Truncate)) //这里需要注意的是,写入文件的时候需要以覆盖的方式 { QMessageBox::information(NULL,"Title","Open File False"); //如果打开失败则提示 } QTextStream out(&file); QTextCodec *codec = QTextCodec::codecForName("gbk"); out.setCodec(codec); QDomDocument doc; //把文件内容写入到doc中 doc.setContent(&file); QDomElement root = doc.createElement("Root"); QDomElement date = doc.createElement("XMLDate"); QStringList list = xmlDate.keys(); for(int i = 0; i<list.count(); i++) { date.setAttribute(list.at(i),xmlDate.value(list.at(i)).toString()); } root.appendChild(date); QString strHead("version = "1.0" encoding = "GB2312""); doc.appendChild(doc.createProcessingInstruction("xml",strHead)); out<<doc.toString(); root.save(out,2); file.close(); //关闭文件 QMessageBox::warning(NULL,"提示","文件写入完成"); return true; }
一个读文件,一个写文件
这里要参考以为牛逼大大的文章
http://blog.csdn.net/sbisyju/article/details/8701561#comments
剩下的就不用在说了,看到前面
这里还有一个问题了就是,前几天没有弄出来的一点,这里要说明一下,
// property JSON date : FileIOSystem.DLReadFile() // property QJSON name: value property var xmljson: FileIOSystem.DLReadXML()
只有最后一种方式是正确的,把C++传来的QJsonObject定义成一个json属性
完了就可以在后面的内容中愉快的使用了
代码结构