summaryrefslogtreecommitdiffstats
path: root/guththila/samples/guththila_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'guththila/samples/guththila_main.c')
-rw-r--r--guththila/samples/guththila_main.c186
1 files changed, 186 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;
+}