文章目录

  • 一、源代码说明
  • 二、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解析相关推荐

  1. 超级简洁的xml解析框架:TBXML

    就xml解析来讲,目前用过的最简洁,速度最快的当属tbxml,是基于C框架的所以直接拿在iPhone上用了. 先说下用法,把tbxml的4个文件拖入class,然后为工程添加libz.dylib框架即 ...

  2. 制衣厂普工小伙用java代码写的xml解析框架

    xml解析框架,这个框架也可以解析html,是我自己写的xml解析技术,花费我很多的时间,我在工厂做这个工作来维持生计↓↓↓↓↓↓↓↓ 哈哈哈,开个玩笑,下面这张图片才是我,这张图片是主管拍的 平均月 ...

  3. freecplus框架简介

    文章目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参 ...

  4. freecplus框架-日志文件操作

    文章目录 一.源代码说明 二.日志文件的意义 三.CLogFile类 1.类的声明 2.示例程序 3.日志文件的切换 四.获取视频教程 五.版权声明 一.源代码说明 freecplus是一个Linux ...

  5. freecplus框架-文件操作

    文章目录 一.源代码说明 二.文件操作函数 1.删除文件 2.文件重命名 3.复制文件 4.获取文件的大小 5.获取文件的时间 6.重置文件的时间 7.示例程序 三.文件读取函数 1.打开文件 2.读 ...

  6. freecplus框架,Linux平台下C/C++程序员提高开发效率的利器

    文章目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参 ...

  7. 01、freecplus框架简介

    文章目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参 ...

  8. freecplus框架,Linux平台下C_C++程序员提高开发效率的利器

    文章目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参 ...

  9. Java XML解析工具 dom4j介绍及使用实例

    Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...

最新文章

  1. pytorch加载预训练模型_Pytorch-Transformers 1.0发布,支持六个预训练框架,含27个预训练模型...
  2. Python 数值计算库之-[Pandas](六)
  3. leetcode 816. Ambiguous Coordinates | 816. 模糊坐标(Java)
  4. Android之SurfaceView学习(一)
  5. MySQL数据库最大连接数
  6. delphi windows编程_学习C/C++:伴随我成长的编程书!
  7. python零基础自学教材-Python3零基础教材电子书合集
  8. qt5 下载 及 qtcreator集成msvc2017 x64
  9. SpringBoot+Vue本地实现微信公总号web端的微信登录获取用户信息,前后端分离
  10. docker修改服务器防火墙,docker宿主机iptables配置
  11. Wireshark、Sniffer 两款网络分析工具的比较
  12. Deepin安装搜狗中文输入法
  13. PageOffice 5.2 试用版注册使用
  14. 胡适致毕业生:功不唐捐
  15. as3读写本地xml/txt
  16. table标签内容过多导致设置宽度失效,超出界面
  17. Node.js是什么?Node.js简介
  18. 英文自我介绍(考研/校内面试/复试)
  19. 台式计算机内存是什么意思,内存频率是什么意思 电脑内存的工作频率是什么...
  20. Hi3518EV200的开发环境搭建,Hi3518E_V200R001C01SPC030

热门文章

  1. 微课|中学生可以这样学Python(5.5.3节):字符串格式化1
  2. Python多线程与Socket编程综合案例:素数
  3. 详解Python GUI版24点游戏制作过程
  4. (c语言)输入两个整数a和n,计算下面表达式的值。Sn=a+aa+aaa+aaaa+.....+aa..aa(n个a)
  5. path manipulation怎么解决_超详细的toad报错解决--no valid oracle clients found.
  6. python之list[index1:index2]是左闭右开
  7. C++之操作符重载探究(四):下标运算符重载
  8. 《Essential C++》笔记之传指针(pass by pointer)分析
  9. vision安装过程中出错_scrapy安装过程中之Twisted的安装遇到的坑
  10. ps3存档是php文件,PS3存档修改图文详细全教程