最近要用c++来读写配置文件,和自己的需要记录的数据,这这东西比存在数据库里面好用,但是唯一不爽的一点是可维护性太差,修改字段后太难处理了,没有PHP拿到参数方便,可以直接以字符串来索引查找参数的值,只能以相对位置,先拿到根目录,然后再根据相对位置查找。
这个东西的好处是可以直接拿来源码用,只有6个文件,放到你的工程里就好了。
头文件
#include "tinystr.h" #include "tinyxml.h"
贴下自己读配置文件的代码,方便以后使用时查找。。
void QuoteReadConfig::ReadConfig(const char* FilePath) { tixmlDocument *myDocument = new tixmlDocument(FilePath); if (myDocument->ErrorId() > 0) return; myDocument->LoadFile(); tixmlElement *QuoteConfig = myDocument->RootElement(); tixmlElement *Logdir = QuoteConfig->FirstChildElement(); quoteConfig->logdir = Logdir->GetText(); tixmlElement *SetUpperNo = Logdir->NextSiblingElement(); tixmlElement *UpperChannelNo = SetUpperNo->FirstChildElement(); tixmlElement *UpperNo = UpperChannelNo->NextSiblingElement(); tixmlElement *PostID = UpperNo->NextSiblingElement(); if (UpperChannelNo != NULL) quoteConfig->UpperChannelNo = UpperChannelNo->GetText(); cout << quoteConfig->UpperChannelNo << endl; if (UpperNo != NULL) quoteConfig->UpperNo = UpperNo->GetText(); if (PostID != NULL) quoteConfig->PostID = PostID->GetText(); tixmlElement *QuoteBusAddress = SetUpperNo->NextSiblingElement(); tixmlElement *BusName = QuoteBusAddress->FirstChildElement(); tixmlElement *IP = BusName->NextSiblingElement(); tixmlElement *Port = IP->NextSiblingElement(); tixmlElement *userNo = Port->NextSiblingElement(); tixmlElement *password = userNo->NextSiblingElement(); if (BusName != NULL) quoteConfig->QBusName = BusName->GetText(); cout << BusName->GetText() << endl; if (IP != NULL) quoteConfig->QIP = IP->GetText(); if(Port != NULL) quoteConfig->QPort = Port->GetText(); if (userNo != NULL) quoteConfig->QuserNo = userNo->GetText(); if (password != NULL) quoteConfig->Qpassword = password->GetText(); tixmlElement *ManageBusAddress = QuoteBusAddress->NextSiblingElement(); BusName = ManageBusAddress->FirstChildElement(); IP = BusName->NextSiblingElement(); Port = IP->NextSiblingElement(); userNo = Port->NextSiblingElement(); password = userNo->NextSiblingElement(); if (BusName != NULL) quoteConfig->MBusName = BusName->GetText(); if (IP != NULL) quoteConfig->MIP = IP->GetText(); if (Port != NULL) quoteConfig->MPort = Port->GetText(); if (userNo != NULL) quoteConfig->MuserNo = userNo->GetText(); if (password != NULL) quoteConfig->Mpassword = password->GetText(); if (myDocument != NULL) { delete myDocument; myDocument = NULL; } }
原文地址:https://www.jb51.cc/xml/298846.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。