blob: 687e490c39152432c6a42d97fb356ad64c036616 [file] [log] [blame]
/*
* 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;
}