Linux 下配置Expat解析XML

 

   

 

   

qt中文论坛

http://www.qtcn.org/bbs/

 

http://blog.chinaunix.net/u/7893/links_3024.html

 

http://sourceforge.net/index.php

 

http://www.cplusplus.com/

 

http://www.chinaunix.net/

  
  
  
Linux 下配置 Expat 解析 XML

环境:Ubuntu-7.10.ext3.2gb1.fs

资料包:

1expat-2.0.1.tar.gz  http://sourceforge.net/project/showfiles.php?group_id=10127

安装:

解压expat-2.0.1.tar.gzexpat-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

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值