parse4.c revision 38ae7e4efe803ea78b6499cd05a394db32623e41
/**
* section: Parsing
* synopsis: Parse an XML document chunk by chunk to a tree and free it
* purpose: Demonstrate the use of xmlCreatePushParserCtxt() and
* xmlParseChunk() to read an XML file progressively
* into a tree and and xmlFreeDoc() to free the resulting tree
* usage: parse4 test3.xml
* test: parse4 test3.xml
* author: Daniel Veillard
* copy: see Copyright for the status of this software.
*/
#include <stdio.h>
#ifdef LIBXML_PUSH_ENABLED
/**
* readPacket:
* @mem: array to store the packet
* @size: the packet size
*
* read at most @size bytes from the document and store it in @mem
*
* Returns the number of bytes read
*/
static int
int res;
return(res);
}
/**
* example4Func:
* @filename: a filename or an URL
*
* Parse the resource and free the resulting tree
*/
static void
example4Func(const char *filename) {
char chars[4];
int res;
/*
* Read a few first byte to check the input used for the
* encoding detection at the parser level.
*/
if (res <= 0) {
return;
}
/*
* Create a progressive parsing context, the 2 first arguments
* are not used since we want to build a tree and not use a SAX
* parsing interface. We also pass the first bytes of the document
* to allow encoding detection when creating the parser but this
* is optional.
*/
return;
}
/*
* loop on the input getting the document data, of course 4 bytes
* at a time is not realistic but allows to verify testing on small
* documents.
*/
}
/*
* there is no more input, indicate the parsing is finished.
*/
/*
* collect the document back and if it was wellformed
* and destroy the parser context.
*/
if (!res) {
}
/*
* since we don't use the document, destroy it now.
*/
}
if (argc != 2)
return(1);
/*
* this initialize the library and check potential ABI mismatches
* between the version it was compiled for and the actual shared
* library used.
*/
/*
* simulate a progressive parsing using the input file.
*/
} else {
}
/*
* Cleanup function for the XML library.
*/
/*
* this is to debug memory for regression tests
*/
return(0);
}
#else /* ! LIBXML_PUSH_ENABLED */
return(1);
}
#endif