/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "guththila.h" #include "guththila_defines.h" int main( int argc, char *argv[]) { int c; axutil_allocator_t *allocator; guththila_reader_t *red; axutil_env_t *environment; guththila_t *parser; char *xml_buffer; allocator = axutil_allocator_init(NULL); xml_buffer = "addddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd123"; environment = axutil_env_create(allocator); if(argc > 1) red = guththila_reader_create_for_file(environment, argv[1]); else { if(xml_buffer) { int size = 0; size = strlen(xml_buffer); red = guththila_reader_create_for_memory(environment, (void *)xml_buffer, size, NULL); } } parser = guththila_create(environment, red); guththila_read(environment, parser); while((c = guththila_next(environment, parser)) != -1) { switch(c) { case GUTHTHILA_START_DOCUMENT: { int ix; printf(" 0; ix--) { guththila_attribute_t *a; char *p; a = guththila_get_attribute(environment, parser); p = guththila_get_attribute_name(environment, parser, a); printf("%s=\"", p); AXIS2_FREE(allocator, p); p = guththila_get_attribute_value(environment, parser, a); printf("%s\" ", p); AXIS2_FREE(allocator, p); guththila_attribute_free(environment, a); } printf("?>\n"); } break; case GUTHTHILA_START_ELEMENT: case GUTHTHILA_EMPTY_ELEMENT: { int ia; int d; char *p; guththila_depth_t *depth; printf("<"); p = guththila_get_prefix(environment, parser); if(p) { printf("%s:", p); AXIS2_FREE(allocator, p); } p = guththila_get_name(environment, parser); printf("%s", p); AXIS2_FREE(allocator, p); ia = guththila_get_attribute_count(environment, parser); for(; ia > 0; ia--) { /* p = guththila_get_attribute_prefix_by_number (parser, ia); */ p = guththila_get_attribute_prefix_by_number(environment, parser, ia); if(p) { printf(" %s:", p); AXIS2_FREE(allocator, p); p = guththila_get_attribute_name_by_number(environment, parser, ia); printf("%s=\"", p); AXIS2_FREE(allocator, p); p = guththila_get_attribute_value_by_number(environment, parser, ia); printf("%s\"", p); AXIS2_FREE(allocator, p); } else { p = guththila_get_attribute_name_by_number(environment, parser, ia); printf(" %s=\"", p); AXIS2_FREE(allocator, p); p = guththila_get_attribute_value_by_number(environment, parser, ia); printf("%s\"", p); AXIS2_FREE(allocator, p); } } depth = (guththila_depth_t *)axutil_stack_get(parser->dep, environment); d = depth->count; for(; d > 0; d--) { p = guththila_get_namespace_prefix_by_number(environment, parser, d); if(strncmp(p, "xmlns", 5)) { printf(" xmlns:"); printf("%s=\"", p); } else printf(" xmlns=\""); AXIS2_FREE(allocator, p); p = guththila_get_namespace_uri_by_number(environment, parser, d); printf("%s\"", p); AXIS2_FREE(allocator, p); } if(parser->guththila_event == GUTHTHILA_START_ELEMENT) printf(">"); else if(parser->guththila_event == GUTHTHILA_EMPTY_ELEMENT) printf("/>"); else printf("error \n"); } break; case GUTHTHILA_END_ELEMENT: { char *p; printf(""); } break; case GUTHTHILA_CHARACTER: { char *p = NULL; p = guththila_get_value(environment, parser); /* if (!parser->is_whitespace) */ /* { */ /* printf(p); */ /* } */ printf("%s", p); AXIS2_FREE(allocator, p); } break; case GUTHTHILA_COMMENT: break; }; } guththila_reader_free(environment, red); guththila_free(environment, parser); axutil_env_free(environment); return 0; }