最近做嵌入式开发,板子上面需要有解析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] 表示是输出参数
/***************************************************