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; +}  | 
