/****************************************************** /* 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; /* 记录一个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; |
//////////////////////////////////////////////////// /// 说明 : 解析XML文件,返回XML的根节点 /// 参数 : /// : xml xml文件路径 [in] /// : buffer 供解析用的缓冲 [in] /// : buffer_len 缓冲大小(单位:字节) [in] /// : error_reason 执行出错时保存错误原因 [in] /// : root XML的根节点 [out] /// 返回 : 成功 返回0 ,失败返回 -1 /// 说明 : /// : 问 :供解析用的缓冲应该取多大比较合适呢? /// : 答 :供解析用的缓冲主要用来存放XML树, 所以 buffer_len >= (XML文件的大小) * 2 即可 /// : int mini_parse_xml (char* xml, char* buffer, int buffer_len, char error_reason[128], MINI_XML_NODE** root); |
//////////////////////////////////////////////////// /// 说明 : 查找特定节点的子节点 /// 参数 : /// : father 父结点 [in] /// : name 子孩子节点名 [in] /// : child 子节点 [out] int mini_find_child (MINI_XML_NODE* father, char* name, MINI_XML_NODE** child); //////////////////////////////////////////////////// /// 说明 : 查找特定节点的属性值 /// 参数 : /// : node 节点 [in] /// : name 属性名 [in] /// : value 属性值 [out] int mini_find_attribute (MINI_XML_NODE* node, char* name, char** value); //////////////////////////////////////////////////// /// 说明 : 打印XML树,供调试用 int mini_print_tree (MINI_XML_NODE* root , int layer); #if defined (__cplusplus) || defined (c_plusplus) } #endif #endif |