博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wxWidgets利用tinyxml实现xml解析
阅读量:6594 次
发布时间:2019-06-24

本文共 2828 字,大约阅读时间需要 9 分钟。

最近正在做的一个项目里涉及到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
InBlock.gif#ifndef ILCDSETXMLCONFIG_H_INCLUDED 

InBlock.gif#define ILCDSETXMLCONFIG_H_INCLUDED 

InBlock.gif 

InBlock.gif                                
//是否自启动字符串定义 

InBlock.gif                                
const 
char* AutoStartStr; 

InBlock.gif                                
//时间间隔字符串定义 

InBlock.gif                                
const 
char* TimeIntervalStr; 

InBlock.gif                                
//背景图片字符串定义 

InBlock.gif                                
const 
char* BgPicStr; 

InBlock.gif                                
//背景音乐字符串定义 

InBlock.gif                                
const 
char* BgMusicStr; 

InBlock.gif                                
//循环轨迹次数字符串定义 

InBlock.gif                                
const 
char* RotateNumStr; 

InBlock.gif 

InBlock.gif 

InBlock.gif#endif 
// ILCDSETXMLCONFIG_H_INCLUDED 

 
 
 
iLcdSetMain.cpp中读取文档的部分
记得要加入 一下两个头文件
InBlock.gif#include 
"tinyxml.h" 
// TinyXML的头文件 

InBlock.gif#include 
"tinystr.h" 
// TinyXML的头文件
InBlock.gif
void iLcdSetFrame::ReadXmlFile() 

InBlock.gif

InBlock.gif        TiXmlDocument doc(
"config.xml"); 

InBlock.gif        doc.LoadFile(); 

InBlock.gif        TiXmlElement* root = doc.FirstChildElement(
"ApplictionConfig"); 

InBlock.gif        
if (root)
//检测主节点ApplictionConfig是否存在 

InBlock.gif        { 

InBlock.gif                
//自启动节点 

InBlock.gif                TiXmlElement* AutoStartElement = root->FirstChildElement(
"AutoStart" ); 

InBlock.gif                
//时间间隔节点 

InBlock.gif                TiXmlElement* TimeIntervalElement = root->FirstChildElement(
"TimeInterval" ); 

InBlock.gif                
//背景图片节点 

InBlock.gif                TiXmlElement* BgPicElement = root->FirstChildElement(
"BgPic" ); 

InBlock.gif                
//背景音乐节点 

InBlock.gif                TiXmlElement* BgMusicElement = root->FirstChildElement(
"BgMusic" ); 

InBlock.gif                
//循环次数节点 

InBlock.gif                TiXmlElement* RoNumElement = root->FirstChildElement(
"RoNum"); 

InBlock.gif 

InBlock.gif                
//自启动节点检测开始 

InBlock.gif                
if (AutoStartElement) 

InBlock.gif                { 

InBlock.gif                        AutoStartStr = AutoStartElement->GetText(); 

InBlock.gif                        wxString ASS(AutoStartStr, wxConvUTF8); 

InBlock.gif                        
if (ASS.Cmp(wxT(
"1"))==0) 

InBlock.gif                        { 

InBlock.gif                                m_AutoStartCheck->SetValue(
true); 

InBlock.gif                        } 

InBlock.gif                        
else 

InBlock.gif                        { 

InBlock.gif                                m_AutoStartCheck->SetValue(
false); 

InBlock.gif                        } 

InBlock.gif                } 

InBlock.gif                
//自启动节点检测结束 

InBlock.gif                
//时间间隔节点检测开始 

InBlock.gif                
if (TimeIntervalElement) 

InBlock.gif                { 

InBlock.gif                        TimeIntervalStr = TimeIntervalElement->GetText(); 

InBlock.gif                        wxString TIS(TimeIntervalStr, wxConvUTF8); 

InBlock.gif                        m_txtTimeCheck->SetValue(TIS); 

InBlock.gif                        
//wxMessageBox(TIS, _("时间间隔")); 

InBlock.gif                } 

InBlock.gif                
//时间间隔节点检测结束 

InBlock.gif 

InBlock.gif                
//背景图片节点检测开始 

InBlock.gif                
if (BgPicElement) 

InBlock.gif                { 

InBlock.gif                        BgPicStr = BgPicElement->GetText(); 

InBlock.gif                        wxString BGS(BgPicStr, wxConvUTF8); 

InBlock.gif                        m_txtBgPic->SetValue(BGS); 

InBlock.gif                        
//wxMessageBox(BGS, _("背景图片节点检测")); 

InBlock.gif                } 

InBlock.gif                
//背景图片节点检测结束 

InBlock.gif 

InBlock.gif                
//循环次数节点检测开始 

InBlock.gif                
if (RoNumElement) 

InBlock.gif                { 

InBlock.gif                        RotateNumStr=RoNumElement->GetText(); 

InBlock.gif                        wxString RN(RotateNumStr, wxConvUTF8); 

InBlock.gif                        m_txtRoateNum->SetValue(RN); 

InBlock.gif                } 

InBlock.gif                
//循环次数节点检测结束 

InBlock.gif 

InBlock.gif                
//背景音乐节点检测开始 

InBlock.gif                
if (BgMusicElement) 

InBlock.gif                { 

InBlock.gif                        BgMusicStr = BgMusicElement->GetText(); 

InBlock.gif                        wxString BGRS(BgMusicStr, wxConvUTF8); 

InBlock.gif                        m_txtBgMusic->SetValue(BGRS); 

InBlock.gif                } 

InBlock.gif 

InBlock.gif                
//背景图片节点检测结束 

InBlock.gif 

InBlock.gif        } 

InBlock.gif 

InBlock.gif}
 
本文转自阿汐 51CTO博客,原文链接:http://blog.51cto.com/axiii/107829,如需转载请自行联系原作者
你可能感兴趣的文章
数据结构与算法——搜索二叉树
查看>>
记一次抓包发现的tcp监听端口被重用的奇怪现象及一些其他
查看>>
shell脚本中的逻辑判断、文件目录属性判断、if特殊用法、case判断
查看>>
关于高可用架构的思考(1-历史与纲要)
查看>>
0601课的预习任务
查看>>
spark-submit java.lang.OutOfMemoryError: Java heap space
查看>>
使用拦截器实现权限管理
查看>>
纯JS检测身份证合法性
查看>>
DHCP协议基本原理
查看>>
计算机组成与体系结构
查看>>
全新服务器 centos 7.4 配置(三) MongoDB安装配置(简单方式)
查看>>
python 自定义函数
查看>>
自动安装虚拟机
查看>>
linux-日常运维-Linux系统日志
查看>>
20180529
查看>>
linux centos 权限查看,修改
查看>>
第二课:第四讲02_04_Linux文件管理命令详解
查看>>
SCI论文写作技巧
查看>>
学习中的简略笔记小结。
查看>>
我最喜欢的五款手机APP 简直就是生活的小帮手
查看>>