1. 背景
一个小工程需要在程序启动的时候,读取xml配置文件信息并进行初始化。
TinyXml是一个精简的比较流行的C++第三方库,所以工程里用它进行读取xml文件。
下载地址: http://sourceforge.net/projects/tinyxml/
2. 源码及解读
解析函数如下:
其中这里只需要读取两个属性值。
具体的库里的函数可以参考文档,比较简单。
bool CTestDlg::InitConfig(void) //读取配置文件
{
const char *fileXml = "TicWebsocketServer.exe.config";
TiXmlDocument doc;
if (!doc.LoadFile(fileXml))
{
AfxMessageBox("哎呀,加载配置文件失败了-_-");
return false;
}
TiXmlElement *rootElement = doc.RootElement();//configuration元素
TiXmlElement *settingElement = rootElement->FirstChildElement("appSettings");//appsettings元素
TiXmlElement *addElement = settingElement->FirstChildElement();//add元素
bool flag = false;
for (; addElement != NULL; addElement = addElement->NextSiblingElement())//遍历add元素的属性
{
TiXmlAttribute *attributeAdd = addElement->FirstAttribute();//第一个属性
if (strcmp(attributeAdd->Value(), "SMS_Enable") == 0)
{
attributeAdd = attributeAdd->Next();//第二个属性
if (strcmp(attributeAdd->Value(), "true") == 0)
{
flag = true;
}
else
flag = false;
}
else if (strcmp(attributeAdd->Value(), "SMS_SerialNumber") == 0)
{
attributeAdd = attributeAdd->Next();
GetDlgItem(IDC_Port)->SetWindowText(attributeAdd->Value());
}
}
return flag;
}
配置文件如下: