I have written a wrapper api for guththila xml writer as well . so that guththila remains completely out of axis2
thanks ..
nandika
/* * Copyright 2004,2005 The Apache Software Foundation. * * Licensed 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. * */ #ifndef AXIS2_XML_WRITER_H #define AXIS2_XML_WRITER_H
/**
[EMAIL PROTECTED] axis2_xml_writer.h
[EMAIL PROTECTED] this is the parser abstraction layer for axis2
*/
#include <axis2_env.h>
#ifdef __cplusplus
extern "C"
{
#endif
typedef struct axis2_xml_writer_ops axis2_xml_writer_ops_t;
typedef struct axis2_xml_writer axis2_xml_writer_t;
/**
* @defgroup axis2_xml_writer
* @ingroup axis2_om_parser
* @{
*/
/**
* \brief axis2_xml_writer operations
* Encapsulator struct for operations of axis2_xml_writer
*/
AXIS2_DECLARE_DATA struct axis2_xml_writer_ops
{
axis2_status_t (AXIS2_CALL *free)(axis2_xml_writer_t *writer,
axis2_env_t **env);
axis2_status_t (AXIS2_CALL *write_start_element)(
axis2_xml_writer_t *writer,
axis2_env_t **env, axis2_char_t *localname);
axis2_status_t (AXIS2_CALL *end_start_element)(axis2_xml_writer_t *writer,
axis2_env_t **env);
axis2_status_t (AXIS2_CALL *write_start_element_with_namespace)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *localname,
axis2_char_t *namespace_uri);
axis2_status_t (AXIS2_CALL *write_start_element_with_namespace_prefix)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *localname,
axis2_char_t *namespace_uri,
axis2_char_t *prefix);
axis2_status_t (AXIS2_CALL *write_empty_element)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *localname);
axis2_status_t (AXIS2_CALL *write_empty_element_with_namespace)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *localname,
axis2_char_t *namespace_uri);
axis2_status_t (AXIS2_CALL *write_empty_element_with_namespace_prefix)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *localname,
axis2_char_t *namespace_uri,
axis2_char_t *prefix);
axis2_status_t (AXIS2_CALL *write_end_element)(axis2_xml_writer_t *writer,
axis2_env_t **env);
axis2_status_t (AXIS2_CALL *write_end_document)(axis2_xml_writer_t *writer,
axis2_env_t **env);
axis2_status_t (AXIS2_CALL *write_attribute)(axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *localname,
axis2_char_t *value);
axis2_status_t (AXIS2_CALL *write_attribute_with_namespace)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *localname,
axis2_char_t *value,
axis2_char_t *namespace_uri);
axis2_status_t (AXIS2_CALL *write_attribute_with_namespace_prefix)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *localname,
axis2_char_t *value,
axis2_char_t *namespace_uri,
axis2_char_t *prefix);
axis2_status_t (AXIS2_CALL *write_namespace)(axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *prefix,
axis2_char_t *namespace_uri);
axis2_status_t (AXIS2_CALL *write_default_namespace)
(axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *namespace_uri);
axis2_status_t (AXIS2_CALL *write_comment)(axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *value);
axis2_status_t (AXIS2_CALL *write_processing_instruction)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *target);
axis2_status_t (AXIS2_CALL *write_processing_instruction_data)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *target,
axis2_char_t *data);
axis2_status_t (AXIS2_CALL *write_cdata)(axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *data);
axis2_status_t (AXIS2_CALL *write_dtd)(axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *dtd);
axis2_status_t (AXIS2_CALL *write_entity_ref)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *name);
axis2_status_t (AXIS2_CALL *write_start_document)(
axis2_xml_writer_t *writer,
axis2_env_t **env);
axis2_status_t (AXIS2_CALL *write_start_document_with_version)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *version);
axis2_status_t (AXIS2_CALL *write_start_document_with_version_encoding)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *encoding,
axis2_char_t *version);
axis2_status_t (AXIS2_CALL *write_characters)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *text);
axis2_char_t* (AXIS2_CALL *get_prefix)( axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *uri);
axis2_status_t (AXIS2_CALL *set_prefix)( axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *prefix,
axis2_char_t *uri);
axis2_status_t (AXIS2_CALL *set_default_prefix)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *uri);
axis2_status_t (AXIS2_CALL *write_encoded)(
axis2_xml_writer_t *writer,
axis2_env_t **env,
axis2_char_t *text,
int in_attr);
};
/**
* @brief axis2_pull_parser struct
* Axis2 OM pull_parser
*/
struct axis2_xml_writer
{
axis2_xml_writer_ops_t *ops;
};
/**
* create function for axis2_xml_writer
*
*/
AXIS2_DECLARE(axis2_xml_writer_t *)
axis2_xml_writer_create(axis2_env_t **env,
void *stream,
axis2_char_t *encoding,
int is_prefix_default);
/********************** start macros *******************************************/
#define AXIS2_XML_WRITER_FREE(writer, env) \
((writer)->ops->free(writer,env))
#define AXIS2_XML_WRITER_WRITE_START_ELEMENT(writer, env, localname) \
((writer)->ops->write_start_element(writer, env, localname))
#define AXIS2_XML_WRITER_END_START_ELEMENT(writer, env) \
((writer)->ops->end_start_element(writer,env))
#define AXIS2_XML_WRITER_WRITE_START_ELEMENT_WITH_NAMESPACE(\
writer, env, localname, namespace_uri)\
((writer)->ops->write_start_element_with_namespace(\
writer, env, localname, namespace_uri))
#define AXIS2_XML_WRITER_WRITE_START_ELEMENT_WITH_NAMESPACE_PREFIX(\
writer, env, localname, namespace_uri, prefix) \
((writer)->ops->write_start_element_with_namespace_prefix(\
writer,env,localname,namespace_uri,prefix))
#define AXIS2_XML_WRITER_WRITE_EMPTY_ELEMENT(writer,env,localname) \
((writer)->ops->write_empty_element(writer,env,localname))
#define AXIS2_XML_WRITER_WRITE_EMPTY_ELEMENT_WITH_NAMESPACE(\
writer, env,localname,namespace_uri) \
((writer)->ops->write_empty_element(writer,env,localname,namespace_uri))
#define AXIS2_XML_WRITER_WRITE_EMPTY_ELEMENT_WITH_NAMESPACE_WITH_PREFIX(\
writer, env, localname, namespace_uri, prefix) \
((writer)->ops->write_empty_element(\
writer,env,localname,namespace_uri, prefix))
#define AXIS2_XML_WRITER_WRITE_END_ELEMENT(writer, env) \
((writer)->ops->write_end_element(writer,env))
#define AXIS2_XML_WRITER_WRITE_END_DOCUMENT(writer, env) \
((writer)->ops->write_end_document(writer,env))
#define AXIS2_XML_WRITER_WRITE_ATTRIBUTE(writer, env, localname, value) \
((writer)->ops->write_attribute(writer,env, localname, value))
#define AXIS2_XML_WRITER_WRITE_ATTRIBUTE_WITH_NAMESPACE(\
writer, env, localname, value, namespace_uri) \
((writer)->ops->write_attribute_with_namespace(\
writer,env, localname, value,namespace_uri))
#define AXIS2_XML_WRITER_WRITE_ATTRIBUTE_WITH_NAMESPACE_PREFIX(\
writer, env, localname, value, namespace_uri, prefix) \
((writer)->ops->write_attribute_with_namespace_prefix(\
writer,env, localname, value,namespace_uri, prefix))
#define AXIS2_XML_WRITER_WRITE_NAMESPACE(writer, env, prefix , namespace_uri) \
((writer)->ops->write_namespace(writer, env, prefix, namespace_uri))
#define AXIS2_XML_WRITER_WRITE_DEFAULT_NAMESPACE(writer, env, namespace_uri) \
((writer)->ops->write_default_namespace(writer, env, namespace_uri))
#define AXIS2_XML_WRITER_WRITE_COMMENT(writer, env, value) \
((writer)->ops->write_comment(writer, env, value))
#define AXIS2_XML_WRITER_WRITE_PROCESSING_INSTRUCTION(writer, env, target) \
((writer)->ops->write_processing_instruction(writer, env, target))
#define AXIS2_XML_WRITER_WRITE_PROCESSING_INSTRUCTION_DATA(writer, env, target, data) \
((writer)->ops->write_processing_instruction_data(writer, env, target, data))
#define AXIS2_XML_WRITER_WRITE_CDATA(writer, env, data) \
((writer)->ops->write_cdata(writer, env, data))
#define AXIS2_XML_WRITER_WRITE_DTD(writer, env, dtd) \
((writer)->ops->write_cdata(writer, env, dtd))
#define AXIS2_XML_WRITER_WRITE_ENTITY_REF(writer, env, entity_ref) \
((writer)->ops->write_entity_ref(writer, env, entity_ref))
#define AXIS2_XML_WRITER_WRITE_START_DOCUMENT(writer, env) \
((writer)->ops->write_start_document(writer,env))
#define AXIS2_XML_WRITER_WRITE_START_DOCUMENT_WITH_VERSION(writer, env, version) \
((writer)->ops->write_start_document_with_version(writer, env, version))
#define AXIS2_XML_WRITER_WRITE_START_DOCUMENT_WITH_VERSION_ENCODING(\
writer, env, encoding, version) \
((writer)->ops->write_start_document_with_version_encoding(\
writer, env, encoding, version))
#define AXIS2_XML_WRITER_WRITE_CHARACTERS(writer, env, text) \
((writer)->ops->write_characters(writer, env, text))
#define AXIS2_XML_WRITER_GET_PREFIX(writer, env, uri) \
((writer)->ops->get_prefix(writer, env, uri))
#define AXIS2_XML_WRITER_SET_PREFIX(writer, env, prefix, uri) \
((writer)->ops->set_prefix(writer, env, prefix, uri))
#define AXIS2_XML_WRITER_SET_DEFAULT_PREFIX(writer, env, uri) \
((writer)->ops->set_default_prefix(writer, env, uri))
#define AXIS2_XML_WRITER_WRITE_ENCODED(writer, env, text, in_attr) \
((writer)->ops->write_encoded(writer, env, text, in_attr))
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* AXIS2_XML_WRITER_H */
