windows下c语言xml解析,计算机二级考试C语言辅导:C语言实现的XML解析器

博主分享了一段C语言编写的XML解析器,适用于嵌入式开发环境,特别是那些没有MMU功能的ARM7设备。该解析器核心代码只有600行,特点是解析过程中不进行动态内存分配,避免内存碎片问题。它支持ANSI编码的XML文件,通过递归下降分析方法解析,使用DFA状态机跳过注释。解析完成后,XML树会存储在预先提供的缓冲区中。
摘要由CSDN通过智能技术生成

d994b863ba883f07beb9bc7070ca043c.png

最近做嵌入式开发,板子上面需要有解析XML的功能,理所当然地我就去网上找开源的来用。结果找来的要不是C++的,要不就是超级复杂的。像libxml,我统计了下解析一个40几KB的XML文件,居然动态申请内存100多次,对于没有mmu功能的arm7,真是无福消受了。

所以,我只能自己写一个来用了。

我写的这个xml解析器,非常简单,核心代码只有600多行。当然,功能也相对弱些,只支持ansi编码的xml文件,只能解析,不能生成。

整个解析器只用到了 若干条 EBNF文法 和 一个DFA状态机 (用来跳过注释的), 采用了递归下降的分析方法.

整个解析过程没有动态申请内存,不会造成内存碎片(特别适应于没有mmu的设备), 当然,在开始解析之前,还是需要提供一片缓冲给解析器用的,最后生成的XML树,就放在这片缓冲里面.

接口如下:

/******************************************************

/* minixml.h

/*

/* author:@#$%^&*

/*

/* about:

/* 该文件提供根据解析XML文件功能

/*

/*

/* sample:

/*

/* 支持平台: windows , linux 2.4,2.6 uclinux

/* [in] 表示是输入参数

/* [out] 表示是输出参数

/******************************************************/

#ifndef _MINIXML_H_08_17_

#define _MINIXML_H_08_17_

#define _CRT_SECURE_NO_DEPRECATE

#if defined (__cplusplus) || defined (c_plusplus)

extern "C" {

#endif

struct _MINI_XML_ATTRI;

struct _MINI_XML_NODE;

/* 记录一个属性信息 */

typedef struct _MINI_XML_ATTRI

{

char* name; /* 属性名 */

char* value; /* 属性值 */

struct _MINI_XML_ATTRI* next; /* 指向下一个属性 */

} MINI_XML_ATTRI;

2829f2ca24f0d0090cbba57f30759f23.png

计算机二级考试C语言辅导:C语言实现的XML解析器.doc

下载Word文档到电脑,方便收藏和打印[全文共794字]

编辑推荐:

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

下载Word文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值