您的位置:首页 > 编程语言 > C语言/C++

C++TinyXml读取解析xml文件

2017-04-28 14:52 330 查看

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;
}


配置文件如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/></startup>
<connectionStrings>
<add name="mssql" connectionString="SERVER=(local);UID=sa;PWD=123456;DataBase=TL_guanghan;" providerName="System.Data.SqlClient"/>
</connectionStrings>
<appSettings>
<add key="port" value="2018"/>
<add key="TLcollectionip" value="192.168.5.240"/>
<add key="TLcollectionport" value="47121"/>
<add key="datacenterip" value="192.168.5.142"/>
<add key="datacenterport" value="48881"/>
<add key="projectID" value="1"/>
<add key="license" value="12345678"/>
<add key="ClientSettingsProvider.ServiceUri" value=""/>
<!--短信猫模块启用使能&串口号-->
<add key="SMS_Enable" value="true"/>
<add key="SMS_SerialNumber" value="4"/>
<add key="SMS_DefaultPhoneNumber" value="18030858854"/>
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.2.13.0" newVersion="1.2.13.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri=""/>
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400"/>
</providers>
</roleManager>
</system.web>
</configuration>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ mfc xml