diff options
Diffstat (limited to 'guththila/samples')
-rw-r--r-- | guththila/samples/guththila_main.c | 186 | ||||
-rw-r--r-- | guththila/samples/guththila_writer_main.c | 71 |
2 files changed, 257 insertions, 0 deletions
diff --git a/guththila/samples/guththila_main.c b/guththila/samples/guththila_main.c new file mode 100644 index 0000000..687e490 --- /dev/null +++ b/guththila/samples/guththila_main.c @@ -0,0 +1,186 @@ +/* + * 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 + = "<?xml version = \"1.0\"?><test a=\"din\">addddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd123</test>"; + 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("<?xml "); + + ix = guththila_get_attribute_count(environment, parser); + for(; ix > 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("</"); + 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); + 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; +} diff --git a/guththila/samples/guththila_writer_main.c b/guththila/samples/guththila_writer_main.c new file mode 100644 index 0000000..9dc1218 --- /dev/null +++ b/guththila/samples/guththila_writer_main.c @@ -0,0 +1,71 @@ +/* + * 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 <stdio.h> +#include <guththila_buffer.h> +#include <guththila_reader.h> +#include <guththila_writer.h> +#include <guththila.h> +#include <axis2_util.h> +#define MAXA 100000 +int +main( + int argc, + char *argv[]) +{ + char *t; + axutil_allocator_t *allocator; + axutil_env_t *env; + guththila_t *parser; + char *xml = NULL; + FILE *file = NULL; + allocator = axutil_allocator_init(NULL); + env = axutil_env_create(allocator); + parser = guththila_create(env, NULL); + guththila_create_xml_stream_writer_for_memory(env, parser); + guththila_write_start_element(env, parser, "two"); + guththila_write_default_namespace(env, parser, "http://another.host.com"); + guththila_write_start_element_with_prefix_and_namespace(env, parser, "ws", + "http://www.wso2.org", "wso2"); + guththila_write_start_element_with_prefix(env, parser, "ws", "stacks"); + guththila_write_attribute_with_prefix(env, parser, "ws", "stack", "axis2"); + guththila_write_characters(env, parser, + "testadfjaldjf;ajf;lkajdfa;lkjfd;ajdf11111111111122334455"); + guththila_write_end_document(env, parser); + + xml = (char *)AXIS2_MALLOC(env->allocator, MAXA + 1); + memset(xml, 0, MAXA + 1); + if(!argv[1]) + { + file = fopen("/home/dinesh/tmp/mbox_backup/mbox.archived", "r"); + } + else + file = fopen(argv[1], "r"); + + if(file) + fread(xml, 1, MAXA, file); + + guththila_write_to_buffer(env, parser, xml); + t = guththila_writer_get_buffer(env, parser->xsw->writer); + printf("%s \n", t); + free(xml); + fclose(file); + guththila_xml_writer_free(env, parser); + guththila_free(env, parser); + axutil_env_free(env); + return 0; +} |