apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Knight <Christopher.D.Kni...@nasa.gov>
Subject SAX-style parsing and apr_xml.h
Date Thu, 29 Jul 2010 17:03:21 GMT
APR folks, given that discussions on apr_xml haven't occurred (at least according to my brief
searching of the archives) since 2001, I thought I'd ask a question:

Could a SAX-style (streaming) interface be added (like Expat's)? Particularly as "under the
hood" is expat. DOM parsers are great (and greatly appreciated in certain circumstances) but
for very large XML documents it means loading the entire DOM tree to get at one piece.

So I propose something along the following lines:

// need this for each of the Expat handlers
typedef int (*apr_xml_startelt_handler_t)(void *userData, const char *name, const char **atts);
APU_DECLARE(apr_status_t) apr_xml_sax_startelement_handler(apr_xml_parser *parser, apr_xml_startelt_handler_t
handler);
//...
APU_DECLARE(apr_status_t) apr_xml_parse_file_sax(apr_pool_t *p,
                                             apr_xml_parser **parser,
                                             apr_file_t *xmlfd,
                                             apr_size_t buffer_length); // note no doc output,
although it would be neat to be able to do both SAX and DOM in certain cases

Of course, you could just tell me to use Expat directly...As I am currently doing. But reducing
my direct dependence, and providing for multiple SAX parser backends might be nice.
Mime
View raw message