diff options
Diffstat (limited to 'axiom/src/om/om_stax_builder.c')
-rw-r--r-- | axiom/src/om/om_stax_builder.c | 168 |
1 files changed, 83 insertions, 85 deletions
diff --git a/axiom/src/om/om_stax_builder.c b/axiom/src/om/om_stax_builder.c index aece97e..a8cfa88 100644 --- a/axiom/src/om/om_stax_builder.c +++ b/axiom/src/om/om_stax_builder.c @@ -685,91 +685,6 @@ axiom_stax_builder_end_element( return AXIS2_SUCCESS; } -axiom_node_t *AXIS2_CALL -axiom_stax_builder_next( - axiom_stax_builder_t * om_builder, - const axutil_env_t * env) -{ - int token = 0; - axiom_node_t *node = NULL; - - do - { - if(om_builder->done) - { - AXIS2_ERROR_SET(env->error, AXIS2_ERROR_BUILDER_DONE_CANNOT_PULL, AXIS2_FAILURE); - return NULL; - } - - token = axiom_xml_reader_next(om_builder->parser, env); - if(token == -1) - { - return NULL; - } - - om_builder->current_event = token; - - switch(token) - { - case AXIOM_XML_READER_START_DOCUMENT: - /*Do nothing */ - break; - - case AXIOM_XML_READER_START_ELEMENT: - node = axiom_stax_builder_create_om_element(om_builder, env, AXIS2_FALSE); - break; - - case AXIOM_XML_READER_EMPTY_ELEMENT: - -#ifdef AXIS2_LIBXML2_ENABLED - node = axiom_stax_builder_create_om_element(om_builder, env, AXIS2_FALSE); -#else - node = axiom_stax_builder_create_om_element(om_builder, env, AXIS2_TRUE); -#endif - - case AXIOM_XML_READER_END_ELEMENT: - axiom_stax_builder_end_element(om_builder, env); - break; - - case AXIOM_XML_READER_SPACE: - node = axiom_stax_builder_create_om_text(om_builder, env); - break; - - case AXIOM_XML_READER_CHARACTER: - node = axiom_stax_builder_create_om_text(om_builder, env); - break; - - case AXIOM_XML_READER_ENTITY_REFERENCE: - break; - - case AXIOM_XML_READER_COMMENT: - - node = axiom_stax_builder_create_om_comment(om_builder, env); - axiom_stax_builder_end_element(om_builder, env); - break; - - case AXIOM_XML_READER_PROCESSING_INSTRUCTION: - - node = axiom_stax_builder_create_om_processing_instruction(om_builder, env); - axiom_stax_builder_end_element(om_builder, env); - break; - - case AXIOM_XML_READER_CDATA: - break; - - case AXIOM_XML_READER_DOCUMENT_TYPE: - break; - - default: - break; - } - } - while(!node && !axiom_node_is_complete(om_builder->root_node, env)); - return node; -} - - - /** * moves the reader to next event and returns the token returned by the xml_reader , * @param builder pointer to STAX builder struct to be used @@ -1055,4 +970,87 @@ axiom_stax_builder_set_cache( { om_builder->cache = enable_cache; } + +axiom_node_t *AXIS2_CALL +axiom_stax_builder_next( + axiom_stax_builder_t * om_builder, + const axutil_env_t * env) +{ + int token = 0; + axiom_node_t *node = NULL; + + do + { + if(om_builder->done) + { + AXIS2_ERROR_SET(env->error, AXIS2_ERROR_BUILDER_DONE_CANNOT_PULL, AXIS2_FAILURE); + return NULL; + } + + token = axiom_xml_reader_next(om_builder->parser, env); + if(token == -1) + { + return NULL; + } + + om_builder->current_event = token; + + switch(token) + { + case AXIOM_XML_READER_START_DOCUMENT: + /*Do nothing */ + break; + + case AXIOM_XML_READER_START_ELEMENT: + node = axiom_stax_builder_create_om_element(om_builder, env, AXIS2_FALSE); + break; + + case AXIOM_XML_READER_EMPTY_ELEMENT: + +#ifdef AXIS2_LIBXML2_ENABLED + node = axiom_stax_builder_create_om_element(om_builder, env, AXIS2_FALSE); +#else + node = axiom_stax_builder_create_om_element(om_builder, env, AXIS2_TRUE); +#endif + + case AXIOM_XML_READER_END_ELEMENT: + axiom_stax_builder_end_element(om_builder, env); + break; + + case AXIOM_XML_READER_SPACE: + node = axiom_stax_builder_create_om_text(om_builder, env); + break; + + case AXIOM_XML_READER_CHARACTER: + node = axiom_stax_builder_create_om_text(om_builder, env); + break; + + case AXIOM_XML_READER_ENTITY_REFERENCE: + break; + + case AXIOM_XML_READER_COMMENT: + + node = axiom_stax_builder_create_om_comment(om_builder, env); + axiom_stax_builder_end_element(om_builder, env); + break; + + case AXIOM_XML_READER_PROCESSING_INSTRUCTION: + + node = axiom_stax_builder_create_om_processing_instruction(om_builder, env); + axiom_stax_builder_end_element(om_builder, env); + break; + + case AXIOM_XML_READER_CDATA: + break; + + case AXIOM_XML_READER_DOCUMENT_TYPE: + break; + + default: + break; + } + } + while(!node && !axiom_node_is_complete(om_builder->root_node, env)); + return node; +} #endif |