当前位置: 首页 > news >正文

wxWidgets利用tinyxml实现xml解析

为什么80%的码农都做不了架构师?>>>   hot3.png

原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。
最近正在做的一个项目里涉及到xml文件的存取,同事推荐的tinyxml++ ,是c++版本的xml解析包,据说很小巧,好用,于是download了一个下来.顺便在其官方主页上下载了premake.exe用来生成工程文件的.以下是premake的用法.
 
Windows
premake --target cb-gcc [--unicode] [--ticpp-shared] [--dynamic-runtime]
Linux
premake --target cb-gcc [--unicode] [--ticpp-shared] [--dynamic-runtime]
 
我这里是默认生成CodeBlocks for gcc的工程文档.
生成之后打开文件进行编译,得到两个文件.libticpp.a, libticppd.a  在需要用到的工程里链接就行了.
 
具体的编译配置网上已经有很多教程,不明白的可以去看.
 
 
先看看运行效果图
 
下面开始针对tinyxml编程.
1:新建一个xml文档 取名 config.xml,内容如下:
<? xml  version ="1.0"  encoding ="UTF-8"  ?> 
< ApplictionConfig > 
         < RoNum >0 </ RoNum > 
         < AutoStart >0 </ AutoStart > 
         < TimeInterval >100 </ TimeInterval > 
         < BgPic >D:\devCode\desktopDev\new iLed\sound\main.wav </ BgPic > 
         < BgMusic >D:\devCode\desktopDev\new iLed\pic\4.png </ BgMusic > 
</ ApplictionConfig > 
 
一共5个属性配置.
然后开始写代码.
ilcdDemoReadConfig.h
#ifndef ILCDSETXMLCONFIG_H_INCLUDED 
#define ILCDSETXMLCONFIG_H_INCLUDED 
 
                                 //是否自启动字符串定义 
                                 const  char* AutoStartStr; 
                                 //时间间隔字符串定义 
                                 const  char* TimeIntervalStr; 
                                 //背景图片字符串定义 
                                 const  char* BgPicStr; 
                                 //背景音乐字符串定义 
                                 const  char* BgMusicStr; 
                                 //循环轨迹次数字符串定义 
                                 const  char* RotateNumStr; 
 
 
#endif  // ILCDSETXMLCONFIG_H_INCLUDED 
 
 
 
iLcdSetMain.cpp中读取文档的部分
记得要加入 一下两个头文件
#include  "tinyxml.h"  // TinyXML的头文件 
#include  "tinystr.h"  // TinyXML的头文件
void iLcdSetFrame::ReadXmlFile() 

        TiXmlDocument doc( "config.xml"); 
        doc.LoadFile(); 
        TiXmlElement* root = doc.FirstChildElement( "ApplictionConfig"); 
         if (root) //检测主节点ApplictionConfig是否存在 
        { 
                 //自启动节点 
                TiXmlElement* AutoStartElement = root->FirstChildElement( "AutoStart" ); 
                 //时间间隔节点 
                TiXmlElement* TimeIntervalElement = root->FirstChildElement( "TimeInterval" ); 
                 //背景图片节点 
                TiXmlElement* BgPicElement = root->FirstChildElement( "BgPic" ); 
                 //背景音乐节点 
                TiXmlElement* BgMusicElement = root->FirstChildElement( "BgMusic" ); 
                 //循环次数节点 
                TiXmlElement* RoNumElement = root->FirstChildElement( "RoNum"); 
 
                 //自启动节点检测开始 
                 if (AutoStartElement) 
                { 
                        AutoStartStr = AutoStartElement->GetText(); 
                        wxString ASS(AutoStartStr, wxConvUTF8); 
                         if (ASS.Cmp(wxT( "1"))==0) 
                        { 
                                m_AutoStartCheck->SetValue( true); 
                        } 
                         else 
                        { 
                                m_AutoStartCheck->SetValue( false); 
                        } 
                } 
                 //自启动节点检测结束 
                 //时间间隔节点检测开始 
                 if (TimeIntervalElement) 
                { 
                        TimeIntervalStr = TimeIntervalElement->GetText(); 
                        wxString TIS(TimeIntervalStr, wxConvUTF8); 
                        m_txtTimeCheck->SetValue(TIS); 
                         //wxMessageBox(TIS, _("时间间隔")); 
                } 
                 //时间间隔节点检测结束 
 
                 //背景图片节点检测开始 
                 if (BgPicElement) 
                { 
                        BgPicStr = BgPicElement->GetText(); 
                        wxString BGS(BgPicStr, wxConvUTF8); 
                        m_txtBgPic->SetValue(BGS); 
                         //wxMessageBox(BGS, _("背景图片节点检测")); 
                } 
                 //背景图片节点检测结束 
 
                 //循环次数节点检测开始 
                 if (RoNumElement) 
                { 
                        RotateNumStr=RoNumElement->GetText(); 
                        wxString RN(RotateNumStr, wxConvUTF8); 
                        m_txtRoateNum->SetValue(RN); 
                } 
                 //循环次数节点检测结束 
 
                 //背景音乐节点检测开始 
                 if (BgMusicElement) 
                { 
                        BgMusicStr = BgMusicElement->GetText(); 
                        wxString BGRS(BgMusicStr, wxConvUTF8); 
                        m_txtBgMusic->SetValue(BGRS); 
                } 
 
                 //背景图片节点检测结束 
 
        } 
 
}
 

转载于:https://my.oschina.net/qchats/blog/77206

相关文章:

  • 关于JAVA的常见误解
  • 乱起八糟用linux之快速查看进程pid
  • JS文件UTF-8格式的问题
  • 使用php mongodb扩展时比较需要注意的事项
  • [转载] 山楂树之恋——07-09
  • 计算硬盘分区使用的大小
  • as3 键盘事件多键同时按下
  • 关于ADSL宽带多重拨号的探究
  • Java-POI读取Excel简单案例
  • 小日记(一)
  • Servlet 读取web.xml文件中的配置参数连接数据库
  • win8 开发之旅(2) --连连看游戏开发 项目错误的总结
  • createNewFile()与createTempFile()的不同
  • 工作第四天之采集资源
  • 网络工作室暑假后第一次培训资料(ADO.NET创建访问数据集)整理
  • android 一些 utils
  • Android单元测试 - 几个重要问题
  • happypack两次报错的问题
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JS变量作用域
  • Linux gpio口使用方法
  • Linux链接文件
  • mongodb--安装和初步使用教程
  • mysql 数据库四种事务隔离级别
  • PHP的类修饰符与访问修饰符
  • Python学习笔记 字符串拼接
  • SpingCloudBus整合RabbitMQ
  • Spring Cloud中负载均衡器概览
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • web标准化(下)
  • 阿里研究院入选中国企业智库系统影响力榜
  • 大整数乘法-表格法
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 微信小程序实战练习(仿五洲到家微信版)
  • 函数计算新功能-----支持C#函数
  • ​虚拟化系列介绍(十)
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $.proxy和$.extend
  • (3)选择元素——(17)练习(Exercises)
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (六)软件测试分工
  • (一)RocketMQ初步认识
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Core 项目指定SDK版本
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划