qt中文论坛 | |
环境:Ubuntu-7.10.ext3.2gb1.fs
资料包:
1、expat-2.0.1.tar.gz http://sourceforge.net/project/showfiles.php?group_id=10127
安装:
① 解压expat-2.0.1.tar.gz到expat-2.0.1
② 进入expat-2.0.1/src/ 执行./configure
③ 进入expat-2.0.1/src/ 执行make
④ 进入expat-2.0.1/src/ 执行make install
⑤ 进入expat-2.0.1/src/example 执行nano test.xml
<url> ABC123456 </url> |
⑥ 进入expat-2.0.1/src/example 执行nano mytest.c
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <expat.h> #define LENGTH 100 static void XMLCALL startElement(void *userData, const char *name, const char **atts) { int i; int *depthPtr = (int *)userData; for (i = 0; i < *depthPtr; i++) { putchar('/t'); } printf("%s/n",name);
*depthPtr += 1; }
static void XMLCALL endElement(void *userData, const char *name) { int *depthPtr = (int *)userData; *depthPtr -= 1; } static void XMLCALL CharData( void *userData, const XML_Char *s, int len) { printf("%s", s);
} main() { int fd, len; char buf[LENGTH]; int done; int depth = 0;
//fd = open("hello.txt", O_CREAT| O_RDWR, S_IRUSR | S_IWUSR); /* */ //if (fd) //{ //write(fd, "Hello, Software Weekly", strlen("Hello, software weekly")); /* Hello, software weekly */ // close(fd); //}
fd = open("test.xml", O_RDWR); len = read(fd, buf, LENGTH); /* */ buf[len] = '/0'; // printf("%s/n", buf); close(fd);
XML_Parser parser = XML_ParserCreate(NULL); XML_SetUserData(parser, &depth); XML_SetElementHandler(parser, startElement, endElement); XML_SetCharacterDataHandler(parser,CharData); do { if (XML_Parse(parser, buf, len, done) == 0) { return 1; } }while (!done);
XML_ParserFree(parser); return 0; } |
⑦进入expat-2.0.1/src/example 执行nano Makefile
objects = mytest $(objects):$(objects).o gcc -o $(objects) $(objects).o /usr/local/lib/libexpat.so $(objects).o: clear: rm $(objects).o $(objects) |
⑧进入expat-2.0.1/src/example 执行make 执行./mytest