wxWidgets利用tinyxml实现xml解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:
最近正在做的一个项目里涉及到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); 
                } 
 
                 //背景图片节点检测结束 
 
        } 
 
}
 
本文转自阿汐 51CTO博客,原文链接:http://blog.51cto.com/axiii/107829,如需转载请自行联系原作者

相关文章
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
2月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
88 0
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
77 2
|
3天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
3天前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

推荐镜像

更多