expat-2.0.1 에 포함되어있는 예제파일인
elements.c를 약간 변형하여

XML tag로 출력되도록 약간 수정하였다.
컴파일에 필요한 libexpat.lib 파일과 expat.h 파일
그리고 테스트용 XML 파일(youtube page)가 포함되어있다.
(libexpat.lib는 내부적으로 libexpat.dll을 호출하는 것으로 보인다.)



01/* This is simple demonstration of how to use expat. This program
02reads an XML document from standard input and writes a line with
03the name of each element to standard output indenting child
04elements by one tab stop more than their parent element.
05It must be used with Expat compiled for UTF-8 output.
06*/
07 
08#include "stdio.h"
09#include "expat.h"
10 
11#if defined(__amigaos__) && defined(__USE_INLINE__)
12#include "proto/expat.h"
13#endif
14 
15#ifdef XML_LARGE_SIZE
16#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
17#define XML_FMT_INT_MOD "I64"
18#else
19#define XML_FMT_INT_MOD "ll"
20#endif
21#else
22#define XML_FMT_INT_MOD "l"
23#endif
24 
25static void XMLCALL
26startElement(void *userData, const char *name, const char **atts)
27{
28    int i;
29    int *depthPtr = (int *)userData;
30    for (i = 0; i < *depthPtr; i++)
31        putchar('\t');
32    printf("<%s>\n",name);
33//  puts(name);
34    *depthPtr += 1;
35}
36 
37static void XMLCALL
38endElement(void *userData, const char *name)
39{
40    int i;
41    int *depthPtr = (int *)userData;
42    *depthPtr -= 1;
43    for (i = 0; i < *depthPtr; i++)
44        putchar('\t');
45    printf("</%s>\n",name);
46    //  puts(name);
47}
48 
49int
50main(int argc, char *argv[])
51{
52    FILE *fp;
53    char buf[BUFSIZ];
54    XML_Parser parser = XML_ParserCreate(NULL);
55    int done;
56    int depth = 0;
57     
58    fp = fopen("GetRecentlyFeaturedVideoFeed.xml","r");
59     
60    XML_SetUserData(parser, &depth);
61    XML_SetElementHandler(parser, startElement, endElement);
62    do {
63        int len = (int)fread(buf, 1, sizeof(buf), fp);
64        done = len < sizeof(buf);
65        if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) {
66            fprintf(stderr,
67                "%s at line %" XML_FMT_INT_MOD "u\n",
68                XML_ErrorString(XML_GetErrorCode(parser)),
69                XML_GetCurrentLineNumber(parser));
70            return 1;
71        }
72    } while (!done);
73    XML_ParserFree(parser);
74    fclose(fp);
75    return 0;
76}

'프로그램 사용 > expat & XML' 카테고리의 다른 글

xml 트리 탐색 - XML tree navigation  (0) 2010.04.17
expat XML_SetCharacterDataHandler() function  (0) 2010.04.09
&amp; &lt; &gt; &quot; 는 머지?  (0) 2010.03.31
expat '간략한' 사용법  (0) 2010.03.28
expat  (4) 2010.03.21
Posted by 구차니