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>
相关文章推荐
- [libexpat]_[XML处理]_[C/C++使用libexpat库以数据流(SAX模型)的方式读取(解析)大XML文件]
- XML文件解析之Tinyxml(C++)
- [libexpat]_[XML处理]_[C/C++使用libexpat库以数据流(SAX模型)的方式读取(解析)大XML文件]
- [转载]JAVA高手解析XML配置文件的读取操作
- C++ XML解析之TinyXML篇
- java解析xml文件读取本地dtd或者忽略dtd
- C++ XML解析之tinyXML
- C++中XML的解析之TinyXML
- tinyxml解析配置文件
- groovy 之 对xml的解析 和 对文件的读取
- C++中XML的解析与生成之TinyXML
- C++ XML解析之TinyXML篇
- C++ XML解析之TinyXML篇
- 【原创】C++利用IXMLDOM解析XML文件。
- C++ XML解析之TinyXML篇
- C++解析XML-TinyXml
- 读取配置文件[方式三]之xml解析配置文件法
- android_xml解析之 使用PULL读取XML文件 .
- JAVA解析XML配置文件的读取操作
- C++ tinyxml解析小试及VC6.0调试中遇到的问题