freecplus框架-xml解析
文章目录
- 一、源代码说明
- 二、xml格式字符串介绍
- 三、xml格式字符串的解析
- 四、应用经验
- 五、获取视频教程
- 六、版权声明
一、源代码说明
freecplus是一个Linux系统下的C/C++开源框架,源代码请前往C语言技术网(www.freecplus.net)下载。
本文介绍的是采用freecplus框架的解析xml格式字符串函数。
函数和类的声明文件是freecplus/_freecplus.h。
函数和类的定义文件是freecplus/_freecplus.cpp。
示例程序位于freecplus/demo目录中。
编译规则文件是freecplus/demo/makefile。
二、xml格式字符串介绍
xml格式字符串是应用开发中被广泛采用的一种数据格式,简单易懂,容错性和可扩展性非常好,是数据处理、数据通讯和数据交换等应用场景的首选数据格式。
完整的xml格式比较复杂,但是,在实际开发中,对我们C/C++程序员来说,绝大部分场景下用到的xml数据格式比较简单,例如表示文件列表信息的xml数据集或文件内容如下:
<data>
<filename>_freecplus.h</filename><mtime>2020-01-01 12:20:35</mtime><size>1834</size><endl/>
<filename>_freecplus.cpp</filename><mtime>2020-01-01 10:10:15</mtime><size>5094</size><endl/>
</data>
数据集说明:
<data>:数据集的开始。
</data>:数据集的结束。
<endl/>:每行数据的结束。
filename标签:文件名。
mtime标签:文件最后一次被修改的时间。
size标签:文件的大小。
三、xml格式字符串的解析
在freecplus框架中,提供了解析以下xml格式字符串的一系函数。
函数声明:
bool GetXMLBuffer(const char *xmlbuffer,const char *fieldname,bool *value);
bool GetXMLBuffer(const char *xmlbuffer,const char *fieldname,int *value);
bool GetXMLBuffer(const char *xmlbuffer,const char *fieldname,unsigned int *value);
bool GetXMLBuffer(const char *xmlbuffer,const char *fieldname,long *value);
bool GetXMLBuffer(const char *xmlbuffer,const char *fieldname,unsigned long *value);
bool GetXMLBuffer(const char *xmlbuffer,const char *fieldname,double *value);
bool GetXMLBuffer(const char *xmlbuffer,const char *fieldname,char *value,const int ilen=0);
参数说明:
xmlbuffer:待解析的xml格式字符串的内容。
fieldname:字段的标签名。
value:传入变量的地址,用于存放字段内容,支持bool、int、insigned
int、long、unsigned long、double和char[]。
注意,当value参数的数据类型为char []时,必须保证value数组的内存足够,否则可能发生内存溢出的问题,也可以用ilen参数限定获取字段内容的长度,ilen的缺省值为0,表示不限定获取字段内容的长度。
返回值:true-获取成功;false-获取失败。
示例(demo22.cpp)
/** 程序名:demo22.cpp,此程序演示调用freecplus框架的GetXMLBuffer函数解析xml字符串。* 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include "../_freecplus.h"// 用于存放足球运动员资料的结构体。
struct st_player
{char name[51]; // 姓名char no[6]; // 球衣号码bool striker; // 场上位置是否是前锋,true-是;false-不是。int age; // 年龄double weight; // 体重,kg。long sal; // 年薪,欧元。char club[51]; // 效力的俱乐部
}stplayer;int main()
{memset(&stplayer,0,sizeof(struct st_player));char buffer[301]; STRCPY(buffer,sizeof(buffer),"<name>messi</name><no>10</no><striker>true</striker><age>30</age><weight>68.5</weight><sal>21000000</sal><club>Barcelona</club>");GetXMLBuffer(buffer,"name",stplayer.name,50);GetXMLBuffer(buffer,"no",stplayer.no,5);GetXMLBuffer(buffer,"striker",&stplayer.striker);GetXMLBuffer(buffer,"age",&stplayer.age);GetXMLBuffer(buffer,"weight",&stplayer.weight);GetXMLBuffer(buffer,"sal",&stplayer.sal);GetXMLBuffer(buffer,"club",stplayer.club,50);printf("name=%s,no=%s,striker=%d,age=%d,weight=%.1f,sal=%ld,club=%s\n",\stplayer.name,stplayer.no,stplayer.striker,stplayer.age,\stplayer.weight,stplayer.sal,stplayer.club);// 输出结果:name=messi,no=10,striker=1,age=30,weight=68.5,sal=21000000,club=Barcelona
}
四、应用经验
对C/C++程序员来说,采用简单的xml字符串表达数据可以提高开发效率,我不建议采用复杂的xml格式,会让程序代码很烦锁。
如果在实际开发中需要解析更复杂的xml,可以寻找网上的开源库,例如libxml++。
五、获取视频教程
百万年薪程序员录制,《C/C++高性能服务开发基础》视频教程已在CSDN学院发布,优惠价12元,地址如下:
https://edu.csdn.net/course/play/29402
六、版权声明
C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道
如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!
freecplus框架-xml解析相关推荐
- 超级简洁的xml解析框架:TBXML
就xml解析来讲,目前用过的最简洁,速度最快的当属tbxml,是基于C框架的所以直接拿在iPhone上用了. 先说下用法,把tbxml的4个文件拖入class,然后为工程添加libz.dylib框架即 ...
- 制衣厂普工小伙用java代码写的xml解析框架
xml解析框架,这个框架也可以解析html,是我自己写的xml解析技术,花费我很多的时间,我在工厂做这个工作来维持生计↓↓↓↓↓↓↓↓ 哈哈哈,开个玩笑,下面这张图片才是我,这张图片是主管拍的 平均月 ...
- freecplus框架简介
文章目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参 ...
- freecplus框架-日志文件操作
文章目录 一.源代码说明 二.日志文件的意义 三.CLogFile类 1.类的声明 2.示例程序 3.日志文件的切换 四.获取视频教程 五.版权声明 一.源代码说明 freecplus是一个Linux ...
- freecplus框架-文件操作
文章目录 一.源代码说明 二.文件操作函数 1.删除文件 2.文件重命名 3.复制文件 4.获取文件的大小 5.获取文件的时间 6.重置文件的时间 7.示例程序 三.文件读取函数 1.打开文件 2.读 ...
- freecplus框架,Linux平台下C/C++程序员提高开发效率的利器
文章目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参 ...
- 01、freecplus框架简介
文章目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参 ...
- freecplus框架,Linux平台下C_C++程序员提高开发效率的利器
文章目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参 ...
- Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
最新文章
- pytorch加载预训练模型_Pytorch-Transformers 1.0发布,支持六个预训练框架,含27个预训练模型...
- Python 数值计算库之-[Pandas](六)
- leetcode 816. Ambiguous Coordinates | 816. 模糊坐标(Java)
- Android之SurfaceView学习(一)
- MySQL数据库最大连接数
- delphi windows编程_学习C/C++:伴随我成长的编程书!
- python零基础自学教材-Python3零基础教材电子书合集
- qt5 下载 及 qtcreator集成msvc2017 x64
- SpringBoot+Vue本地实现微信公总号web端的微信登录获取用户信息,前后端分离
- docker修改服务器防火墙,docker宿主机iptables配置
- Wireshark、Sniffer 两款网络分析工具的比较
- Deepin安装搜狗中文输入法
- PageOffice 5.2 试用版注册使用
- 胡适致毕业生:功不唐捐
- as3读写本地xml/txt
- table标签内容过多导致设置宽度失效,超出界面
- Node.js是什么?Node.js简介
- 英文自我介绍(考研/校内面试/复试)
- 台式计算机内存是什么意思,内存频率是什么意思 电脑内存的工作频率是什么...
- Hi3518EV200的开发环境搭建,Hi3518E_V200R001C01SPC030
热门文章
- 微课|中学生可以这样学Python(5.5.3节):字符串格式化1
- Python多线程与Socket编程综合案例:素数
- 详解Python GUI版24点游戏制作过程
- (c语言)输入两个整数a和n,计算下面表达式的值。Sn=a+aa+aaa+aaaa+.....+aa..aa(n个a)
- path manipulation怎么解决_超详细的toad报错解决--no valid oracle clients found.
- python之list[index1:index2]是左闭右开
- C++之操作符重载探究(四):下标运算符重载
- 《Essential C++》笔记之传指针(pass by pointer)分析
- vision安装过程中出错_scrapy安装过程中之Twisted的安装遇到的坑
- ps3存档是php文件,PS3存档修改图文详细全教程