• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/apache-786.1/httpd/srclib/apr-util/xml/

Lines Matching defs:parser

55 /* the real (internal) definition of the parser context */
66 XML_Parser xp; /* the actual (Expat) XML parser */
80 static int find_prefix(apr_xml_parser *parser, const char *prefix)
82 apr_xml_elem *elem = parser->cur_elem;
125 apr_xml_parser *parser = userdata;
134 if (parser->error)
137 elem = apr_pcalloc(parser->p, sizeof(*elem));
140 elem->name = elem_name = apr_pstrdup(parser->p, name);
144 attr = apr_palloc(parser->p, sizeof(*attr));
145 attr->name = apr_pstrdup(parser->p, *attrs++);
146 attr->value = apr_pstrdup(parser->p, *attrs++);
152 if (parser->cur_elem == NULL) {
154 parser->cur_elem = parser->doc->root = elem;
158 elem->parent = parser->cur_elem;
172 parser->cur_elem = elem;
188 parser->error = APR_XML_NS_ERROR_INVALID_DECL;
200 quoted = apr_xml_quote_string(parser->p, attr->value, 1);
203 ns_scope = apr_pcalloc(parser->p, sizeof(*ns_scope));
205 ns_scope->ns = apr_xml_insert_uri(parser->doc->namespaces, quoted);
220 elem->lang = apr_xml_quote_string(parser->p, attr->value, 1);
253 elem->ns = find_prefix(parser, "");
260 elem->ns = find_prefix(parser, elem->name);
264 parser->error = elem->ns;
291 attr->ns = find_prefix(parser, attr->name);
295 parser->error = attr->ns;
304 apr_xml_parser *parser = userdata;
307 if (parser->error)
311 parser->cur_elem = parser->cur_elem->parent;
316 apr_xml_parser *parser = userdata;
322 if (parser->error)
325 elem = parser->cur_elem;
326 s = apr_pstrndup(parser->p, data, len);
337 apr_text_append(parser->p, hdr, s);
342 apr_xml_parser *parser = ctx;
344 XML_ParserFree(parser->xp);
345 parser->xp = NULL;
351 /* Stop the parser if an entity declaration is hit. */
358 apr_xml_parser *parser = userData;
360 XML_StopParser(parser->xp, XML_FALSE);
371 apr_xml_parser *parser = apr_pcalloc(pool, sizeof(*parser));
373 parser->p = pool;
374 parser->doc = apr_pcalloc(pool, sizeof(*parser->doc));
376 parser->doc->namespaces = apr_array_make(pool, 5, sizeof(const char *));
379 apr_xml_insert_uri(parser->doc->namespaces, APR_KW_DAV);
381 parser->xp = XML_ParserCreate(NULL);
382 if (parser->xp == NULL) {
387 apr_pool_cleanup_register(pool, parser, cleanup_parser,
390 XML_SetUserData(parser->xp, parser);
391 XML_SetElementHandler(parser->xp, start_handler, end_handler);
392 XML_SetCharacterDataHandler(parser->xp, cdata_handler);
395 * internal entity expansion. With 2.x, forcibly stop the parser
402 XML_SetEntityDeclHandler(parser->xp, entity_declaration);
404 XML_SetDefaultHandler(parser->xp, default_handler);
407 return parser;
410 static apr_status_t do_parse(apr_xml_parser *parser,
414 if (parser->xp == NULL) {
415 parser->error = APR_XML_ERROR_PARSE_DONE;
418 int rv = XML_Parse(parser->xp, data, (int)len, is_final);
421 parser->error = APR_XML_ERROR_EXPAT;
422 parser->xp_err = XML_GetErrorCode(parser->xp);
427 return parser->error ? APR_EGENERAL : APR_SUCCESS;
430 APU_DECLARE(apr_status_t) apr_xml_parser_feed(apr_xml_parser *parser,
434 return do_parse(parser, data, len, 0 /* is_final */);
437 APU_DECLARE(apr_status_t) apr_xml_parser_done(apr_xml_parser *parser,
441 apr_status_t status = do_parse(parser, &end, 0, 1 /* is_final */);
443 /* get rid of the parser */
444 (void) apr_pool_cleanup_run(parser->p, parser, cleanup_parser);
450 *pdoc = parser->doc;
454 APU_DECLARE(char *) apr_xml_parser_geterror(apr_xml_parser *parser,
458 int error = parser->error;
462 parser->error = 0;
479 "XML parser error code: %s (%d)",
480 XML_ErrorString(parser->xp_err), parser->xp_err);
484 msg = "The parser is not active.";
497 apr_xml_parser **parser,
506 *parser = apr_xml_parser_create(p);
507 if (*parser == NULL) {
518 rv = apr_xml_parser_feed(*parser, buffer, length);
529 rv = apr_xml_parser_done(*parser, ppdoc);
530 *parser = NULL;