#include "xmlconfig.h" #include #include using namespace Config; XMLConfig::XMLConfig(QObject *parent) : Configration(parent) { } int XMLConfig::loadFile(const QString &path) { file_path = path; QFile config(path); if(!config.exists()){ config.open(QIODevice::WriteOnly); QTextStream tout(&config); tout << "" << endl; tout << "" << endl; tout.flush(); config.flush(); config.close(); } if(!config.open(QIODevice::Text|QIODevice::ReadOnly)){ return -1; } QString err_str; int err_row, err_col; if(doc_ins.setContent(&config, false, &err_str, &err_row, &err_col)){ return -2; } return 0; } QDir XMLConfig::currentDir() const { return QFileInfo(file_path).dir(); } void XMLConfig::save() const { QFile fout(this->file_path); if(!fout.open(QIODevice::WriteOnly | QIODevice::Text)){ qDebug() << "配置文件保存错误" << QString("指定配置文件%1保存过程中,无法打开").arg(file_path); return; } QTextStream tout(&fout); tout << this->doc_ins.toString(4); tout.flush(); fout.flush(); fout.close(); } void XMLConfig::deleteX(const QList &path) { auto elm = local_exists_elm(doc_ins.documentElement(), path); if(elm.isNull()) return; elm.parentNode().removeChild(elm); } void XMLConfig::setConfig(const QList &path, const QString &value) { auto doc = doc_ins.documentElement(); auto elm = rebuild_exists_elms(doc, path); elm.setAttribute("value", value); } QString XMLConfig::getConfig(const QList &path) const { auto elm = local_exists_elm(doc_ins.documentElement(), path); if(elm.isNull()) return ""; return elm.attribute("value"); } void XMLConfig::setList(const QList &path, const QList &list) { auto root = doc_ins.documentElement(); auto telm = rebuild_exists_elms(root, path); auto childs = telm.elementsByTagName("list"); for(auto idx=0; idx XMLConfig::getList(const QList &path) const { auto elm = local_exists_elm(doc_ins.documentElement(), path); QList rets; auto childs = elm.elementsByTagName("list"); for(auto idx=0; idx &path, const QHash &map) { auto root = doc_ins.documentElement(); auto telm = rebuild_exists_elms(root, path); auto childs = telm.elementsByTagName("map"); for(auto idx=0; idx XMLConfig::getMap(const QList &path) const { auto elm = local_exists_elm(doc_ins.documentElement(), path); QHash rets; auto childs = elm.elementsByTagName("map"); for(auto idx=0; idx &path, int level) const { auto child = elm_base.elementsByTagName("path"); for(auto idx=0; idx &path, int level) { auto child = elm_base.elementsByTagName("path"); for(auto idx=0; idx