#001@H_404_1@
#013@H_404_1@
#014@H_404_1@
#015 #include <stdio.h>@H_404_1@
#016 #include "xmlparse.h"@H_404_1@
#017@H_404_1@
#018 #define BUFFSIZE 8192@H_404_1@
#019@H_404_1@
#020 char Buff[BUFFSIZE];@H_404_1@
#021@H_404_1@
#023@H_404_1@
#024 void@H_404_1@
#025 start(void *data,const char *el,const char **attr) {@H_404_1@
#026 int i;@H_404_1@
#027@H_404_1@
#029 printf(" ");@H_404_1@
#030@H_404_1@
#032@H_404_1@
#034 printf(" %s='%s'",attr[i],attr[i + 1]);@H_404_1@
#035 }@H_404_1@
#036@H_404_1@
#038 Depth++;@H_404_1@
#039 }@H_404_1@
#040@H_404_1@
#041 void@H_404_1@
#042 end(void *data,const char *el) {@H_404_1@
#043 Depth--;@H_404_1@
#044 }@H_404_1@
#045@H_404_1@
#046 void@H_404_1@
#047 main(int argc,char **argv) {@H_404_1@
创建一个XML分析器。@H_404_1@
#048 XML_Parser p = XML_ParserCreate(NULL);@H_404_1@
下面判断是否创建XML分析器失败。@H_404_1@
#049 if (! p) {@H_404_1@
#050 fprintf(stderr,"Couldn't allocate memory for parser\n");@H_404_1@
#051 exit(-1);@H_404_1@
#052 }@H_404_1@
#053@H_404_1@
#054 XML_SetElementHandler(p,start,end);@H_404_1@
#055@H_404_1@
#056 for (;;) {@H_404_1@
#057 int done;@H_404_1@
#058 int len;@H_404_1@
#059@H_404_1@
#060 len = fread(Buff,1,BUFFSIZE,stdin);@H_404_1@
读取文件出错就退出。@H_404_1@
#061 if (ferror(stdin)) {@H_404_1@
#062 fprintf(stderr,"Read error\n");@H_404_1@
#063 exit(-1);@H_404_1@
#064 }@H_404_1@
判断是否读取文件到结束。@H_404_1@
#065 done = feof(stdin);@H_404_1@
#066@H_404_1@
#067 if (! XML_Parse(p,Buff,len,done)) {@H_404_1@
#068 fprintf(stderr,"Parse error at line %d:\n%s\n",@H_404_1@
#069 XML_GetCurrentLineNumber(p),180)">#070 XML_ErrorString(XML_GetErrorCode(p)));@H_404_1@
#071 exit(-1);@H_404_1@
#072 }@H_404_1@
#073@H_404_1@
#074 if (done)@H_404_1@
#075 break;@H_404_1@
#076 }@H_404_1@
#077 }@H_404_1@
#078@H_404_1@