EXPAT usage
来源:互联网 发布:云计算技术发展趋势 编辑:程序博客网 时间:2024/06/11 14:54
Expat can be intimidating due to the many kinds of handlers and options you can set. But you only need to learn four functions in order to do 80% of what you'll want to do with it:
XML_ParserCreate
- Create a new parser object.
XML_SetElementHandler
- Set handlers for start and end tags.
XML_SetCharacterDataHandler
- Set handler for text.
XML_Parse
Pass a buffer full of document to the parser
/***************************************************************** * outline.c * * Copyright 1999, Clark Cooper * All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the license contained in the * COPYING file that comes with the expat distribution. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * Read an XML document from standard input and print an element * outline on standard output. * Must be used with Expat compiled for UTF-8 output. */#include <stdio.h>#include <expat.h>#if defined(__amigaos__) && defined(__USE_INLINE__)#include <proto/expat.h>#endif#ifdef XML_LARGE_SIZE#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400#define XML_FMT_INT_MOD "I64"#else#define XML_FMT_INT_MOD "ll"#endif#else#define XML_FMT_INT_MOD "l"#endif#define BUFFSIZE 8192char Buff[BUFFSIZE];int Depth;static void XMLCALLstart(void *data, const char *el, const char **attr){ int i; for (i = 0; i < Depth; i++) printf(" "); printf("%s", el); for (i = 0; attr[i]; i += 2) { printf(" %s='%s'", attr[i], attr[i + 1]); } printf("\n"); Depth++;}static void XMLCALLend(void *data, const char *el){ Depth--;}intmain(int argc, char *argv[]){ XML_Parser p = XML_ParserCreate(NULL); if (! p) { fprintf(stderr, "Couldn't allocate memory for parser\n"); exit(-1); } XML_SetElementHandler(p, start, end); for (;;) { int done; int len; len = (int)fread(Buff, 1, BUFFSIZE, stdin); if (ferror(stdin)) { fprintf(stderr, "Read error\n"); exit(-1); } done = feof(stdin); if (XML_Parse(p, Buff, len, done) == XML_STATUS_ERROR) { fprintf(stderr, "Parse error at line %" XML_FMT_INT_MOD "u:\n%s\n", XML_GetCurrentLineNumber(p), XML_ErrorString(XML_GetErrorCode(p))); exit(-1); } if (done) break; } XML_ParserFree(p); return 0;}
- EXPAT usage
- Expat
- expat
- usage
- expat & scew
- expat:element
- EXPAT简介
- xml expat
- expat & scew
- Using Expat[1]:What is expat?
- Using Expat[2]:Overview of Expat
- Using Expat[3]:Expat Function Reference
- expat怎么用
- expat解析库学习
- SVG And Expat
- expat函数指南
- The Expat XML Parser
- zz - Expat学习笔记
- 从文件中读取成绩
- 色彩模式
- 括号匹配问题
- Oracle复制行记录的小技巧
- mac 下配置adb环境
- EXPAT usage
- 项目中常用的动画集锦(一直更新中……)
- 智能手机网页制作12个注意事项
- 八字易经算法之用JAVA实现排大运
- MMORPG 游戏服务器端设计
- xml方式---spring的AOP拦截用户操作
- trouble writing output: Too many methods: 65641; max is 65536. By package:
- ASP连接SQL2005数据库连接代码
- __attribute__的一些小用法