⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testreader.c.svn-base

📁 这是一个用于解析xml文件的类库。使用这个类库
💻 SVN-BASE
字号:
/* * testSAX.c : a small tester program for parsing using the SAX API. * * See Copyright for the status of this software. * * daniel@veillard.com */#include "libxml.h"#ifdef LIBXML_READER_ENABLED#include <string.h>#include <stdarg.h>#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_SYS_STAT_H#include <sys/stat.h>#endif#ifdef HAVE_FCNTL_H#include <fcntl.h>#endif#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_STDLIB_H#include <stdlib.h>#endif#ifdef HAVE_STRING_H#include <string.h>#endif#include <libxml/xmlreader.h>int debug = 0;int dump = 0;int noent = 0;int count = 0;int valid = 0;static void usage(const char *progname) {    printf("Usage : %s [options] XMLfiles ...\n", progname);    printf("\tParse the XML files using the xmlTextReader API\n");    printf("\t --count: count the number of attribute and elements\n");    printf("\t --valid: validate the document\n");    exit(1);}static int elem, attrs;static void processNode(xmlTextReaderPtr reader) {    int type;    type = xmlTextReaderNodeType(reader);    if (count) {	if (type == 1) {	    elem++;	    attrs += xmlTextReaderAttributeCount(reader);	}    }}static void handleFile(const char *filename) {    xmlTextReaderPtr reader;    int ret;    if (count) {	elem = 0;	attrs = 0;    }    reader = xmlNewTextReaderFilename(filename);    if (reader != NULL) {	if (valid)	    xmlTextReaderSetParserProp(reader, XML_PARSER_VALIDATE, 1);	/*	 * Process all nodes in sequence	 */	ret = xmlTextReaderRead(reader);	while (ret == 1) {	    processNode(reader);	    ret = xmlTextReaderRead(reader);	}	/*	 * Done, cleanup and status	 */	xmlFreeTextReader(reader);	if (ret != 0) {	    printf("%s : failed to parse\n", filename);	} else if (count)	    printf("%s : %d elements, %d attributes\n", filename, elem, attrs);    } else {	fprintf(stderr, "Unable to open %s\n", filename);    }}int main(int argc, char **argv) {    int i;    int files = 0;    if (argc <= 1) {	usage(argv[0]);	return(1);    }    LIBXML_TEST_VERSION    for (i = 1; i < argc ; i++) {	if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug")))	    debug++;	else if ((!strcmp(argv[i], "-dump")) || (!strcmp(argv[i], "--dump")))	    dump++;	else if ((!strcmp(argv[i], "-count")) || (!strcmp(argv[i], "--count")))	    count++;	else if ((!strcmp(argv[i], "-valid")) || (!strcmp(argv[i], "--valid")))	    valid++;	else if ((!strcmp(argv[i], "-noent")) ||	         (!strcmp(argv[i], "--noent")))	    noent++;    }    if (noent != 0) xmlSubstituteEntitiesDefault(1);    for (i = 1; i < argc ; i++) {	if (argv[i][0] != '-') {	    handleFile(argv[i]);	    files ++;	}    }    xmlCleanupParser();    xmlMemoryDump();    return(0);}#elseint main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {    printf("%s : xmlReader parser support not compiled in\n", argv[0]);    return(0);}#endif /* LIBXML_READER_ENABLED */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -