最近做嵌入式開發
所以
我寫的這個xml解析器
整個解析器只用到了 若干條 EBNF文法 和 一個DFA狀態機 (用來跳過注釋的)
整個解析過程沒有動態申請內存
接口如下:
/******************************************************
/* minixml
/*
/* author:@#$%^&*
/*
/* about:
/* 該文件提供根據解析XML文件功能
/*
/*
/* sample:
/*
/* 支持平台: windows
/* [in] 表示是輸入參數
/* [out] 表示是輸出參數
/******************************************************/
#ifndef _MINIXML_H_
#define _MINIXML_H_
#define _CRT_SECURE_NO_DEPRECATE
#if defined (__cplusplus) || defined (c_plusplus)
extern
#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;
/* 記錄一個XML節點信息 */
typedef struct _MINI_XML_NODE
{
char* name; /* 節點名 */
char* value; /* 節點值 */
MINI_XML_ATTRI* attri_list; /* 屬性列表 */
struct _MINI_XML_NODE* parent; /* 父節點 */
struct _MINI_XML_NODE* child; /* 子節點
struct _MINI_XML_NODE* next; /* 同層下一節點 */
} MINI_XML_NODE;
[
From:http://tw.wingwit.com/Article/program/net/201311/14907.html