良许Linux教程网 干货合集 一个基于C语言的XML解析器!

一个基于C语言的XML解析器!

simple_xml 简介

simple_xml是一个基于C语言的XML解析器。现有的一些开源解析器与特定操作系统相关,对于一些非主流操作系统或嵌入式操作系统来说,使用XML文件可能会变得相对困难。

开发这个项目的目标是创建一个能在多个平台上应用的代码。然而,由于作者对平台的接触有限,需要大家的帮助来逐步改善它。目前,该代码已经成功应用于主流操作系统,包括WIN10、Linux、rt-thread和VxWorks等。

simple_xml 特点

  • • 实现了xml node对象,是本解析器最核心的功能实现
  • • 基于xml node对象,派生了xml element对象,使得相关函数对xml element的操作更容易
  • • 应用程序主要使用xml element对象的函数来读取或写入xml element的属性,文本,子节点等
  • • 提供了字符串的相关函数集,减少对标准库的依赖,便于跨平台的支持
  • • 支持全功能OS平台、也支持运行在裸机环境,但使用了动态内存分配,裸机环境下要考虑文件系统以及动态内核分配的实现
  • • 提供了在使用xml会用得上的一些函数,比如xml_ishex,用来判断字符串是否为hex格式的字符串
  • • 提供了文件操作抽象层和内存操作抽象层,用于分离与平台相关的API,主要目的是为了方便扩展未支持的文件系统和动态内存管理库

目录结构

名称 描述
docs 计划对各模块进行详细的解释说明,目前还没有完整
examples 包含一个main.c和xmltest.xml作为示例
inc simple_xml的头文件
src simple_xml的源文件
LICENSE MIT License
README.md 对SimpleXML的说明
Sconscript rt-thread软件包中编译脚本

移植方法

  1. \1. 将inc和src两个文件夹Copy到自己的目录
  2. \2. 在调试simple_xml的API的.c文件中包含头文件xml_export.h

已支持OS平台

  1. \1. 配置xml_config.h中的宏OS_VER为目标系统

未支持平台

  1. \1. 配置xml_config.h中的宏OS_VER为OS_UNKOWN
  2. \2. 调用xml_fconfig函数和xml_mconfig函数配置文件抽象操作函数和内存抽象操作函数

使用示例

由于目前已经没有VxWorks的工作环境,暂无法测试,但从使用经验上来看,跟Linux基本一样。

基于GCC+Makefile构建

仅在Linux的环境下做了测试。在WIN10下makefile的脚本未作兼容,使用起来会有问题,建议在WIN10使用的示例直接使用VS2019来搭建测试环境。

  1. \1. 进入目录example/build/make
  2. \2. 在命令行输入:
    $ make
  3. \3. 在命令行输入:
    $ ./simple_xml ../../xmltest.xml
  4. \4. 检查打印内容是否与xmltest.xml一致

基于rt-thread构建

手动移植

  1. \1. 将整个simple_xml目录放入rt-thread BSP里的packages目录
  2. \2. 手动在rtconfig.h头文件中加入
#define PKG_USING_SIMPLE_XML
#define PKG_USING_SIMPLE_XML_EXAMPLE
  1. \1. 在ENV工具中编译
> scons
  1. \1. 下载固件到目标板或qemu中。
  2. \2. 将example/xmltest.xml放入rt-thread的文件系统中。
  3. \3. 输入以下指令
msh />xml_test
  • • 使用软件包
  1. \1. 在ENV环境下使用menuconfig,找到simple_xml
RT-Thread online packages 
    → IoT - internet of things 
        → simple_xml  : Based on the XML parser of the C language.
  1. \1. 下载软件包
> pkgs --update
  1. \1. 同手动移植第3步

仓库

  • • github : https://github.com/xfwangqiang/simple_xml.git
  • • gitee : https://gitee.com/xfwangqiang/simple_xml.git

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部