以下是测试的xml:
<config> <path>XXXXXXXXXXX</path> <path1>XXXXXXXXXXX1</path1> </config>
读写xml的代码:
#include "xmlutil.h" XmlUtil::XmlUtil() { } void XmlUtil::writeXml(QString& path,QMap<QString,QString>& map){ QFile file(path); if(not file.open(QIODevice::ReadWrite)) return; QDomDocument doc; QDomElement rootEle = doc.createElement("config"); doc.appendChild(rootEle); QMap<QString,QString>::const_iterator ite; for( ite=map.constBegin(); ite!=map.constEnd(); ite++){ cout << ite.key().toStdString() <<" " << ite.value().toStdString(); QDomElement pathEle = doc.createElement(ite.key()); pathEle.appendChild(doc.createTextNode(ite.value())); rootEle.appendChild(pathEle); } QTextStream out(&file); doc.save(out,QIODevice::ReadWrite); file.close(); } QMap<QString,QString>* XmlUtil::readXml(QString& path){ QMap<QString,QString>* map=new QMap<QString,QString>(); QFile file(path); if(!file.open(QIODevice::ReadOnly)){ return NULL; } QDomDocument doc; doc.setContent(&file); QDomElement rootEle = doc.documentElement(); //把全部二级item存放在list中 QDomNodeList secondItemlist = rootEle.childNodes(); for(int i = 0;i < secondItemlist.count();i++) { QDomNode node = secondItemlist.at(i); // cout<<endl<<node.toElement().nodeName().toStdString()<<"000000000000"<<node.toElement().text().toStdString()<<"++++++++++++++++"<<endl; map->insert(node.toElement().nodeName(),node.toElement().text()); }//end for file.close(); return map; }
测试:
QMap<QString,QString> map; map.insert("path","XXXXXXXXXXX"); map.insert("path1","XXXXXXXXXXX1"); XmlUtil xml; QString path=QString::fromStdString("config.xml"); xml.writeXml(path,map); QMap<QString,QString>* ret=xml.readXml(path); QMap<QString,QString>::const_iterator ite; for( ite=ret->constBegin(); ite!=ret->constEnd(); ite++){ cout << ite.key().toStdString() <<" " << ite.value().toStdString(); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。