00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef AXIOM_XML_READER_H
00020 #define AXIOM_XML_READER_H
00021
00027 #include <axutil_env.h>
00028 #include <axutil_utils.h>
00029
00030 #ifdef __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034
00035 typedef struct axiom_xml_reader_ops axiom_xml_reader_ops_t;
00036 typedef struct axiom_xml_reader axiom_xml_reader_t;
00037
00051 typedef enum axiom_xml_reader_event_types
00052 {
00053 AXIOM_XML_READER_START_DOCUMENT = 0,
00054 AXIOM_XML_READER_START_ELEMENT,
00055 AXIOM_XML_READER_END_ELEMENT,
00056 AXIOM_XML_READER_SPACE,
00057 AXIOM_XML_READER_EMPTY_ELEMENT,
00058 AXIOM_XML_READER_CHARACTER,
00059 AXIOM_XML_READER_ENTITY_REFERENCE,
00060 AXIOM_XML_READER_COMMENT,
00061 AXIOM_XML_READER_PROCESSING_INSTRUCTION,
00062 AXIOM_XML_READER_CDATA,
00063 AXIOM_XML_READER_DOCUMENT_TYPE
00064 } axiom_xml_reader_event_types;
00065
00071 struct axiom_xml_reader_ops
00072 {
00073
00083 int(
00084 AXIS2_CALL
00085 * next)(
00086 axiom_xml_reader_t * parser,
00087 const axutil_env_t * env);
00088
00096 void(
00097 AXIS2_CALL
00098 * free)(
00099 axiom_xml_reader_t * parser,
00100 const axutil_env_t * env);
00101
00109 int(
00110 AXIS2_CALL
00111 * get_attribute_count)(
00112 axiom_xml_reader_t * parser,
00113 const axutil_env_t * env);
00114
00124 axis2_char_t *(
00125 AXIS2_CALL
00126 * get_attribute_name_by_number)(
00127 axiom_xml_reader_t * parser,
00128 const axutil_env_t * env,
00129 int i);
00130
00141 axis2_char_t *(
00142 AXIS2_CALL
00143 * get_attribute_prefix_by_number)(
00144 axiom_xml_reader_t * parser,
00145 const axutil_env_t * env,
00146 int i);
00147
00158 axis2_char_t *(
00159 AXIS2_CALL
00160 * get_attribute_value_by_number)(
00161 axiom_xml_reader_t * parser,
00162 const axutil_env_t * env,
00163 int i);
00164
00175 axis2_char_t *(
00176 AXIS2_CALL
00177 * get_attribute_namespace_by_number)(
00178 axiom_xml_reader_t * parser,
00179 const axutil_env_t * env,
00180 int i);
00181
00188 axis2_char_t *(
00189 AXIS2_CALL
00190 * get_value)(
00191 axiom_xml_reader_t * parser,
00192 const axutil_env_t * env);
00193
00200 int(
00201 AXIS2_CALL
00202 * get_namespace_count)(
00203 axiom_xml_reader_t * parser,
00204 const axutil_env_t * env);
00205
00215 axis2_char_t *(
00216 AXIS2_CALL
00217 * get_namespace_uri_by_number)(
00218 axiom_xml_reader_t * parser,
00219 const axutil_env_t * env,
00220 int i);
00221
00231 axis2_char_t *(
00232 AXIS2_CALL
00233 * get_namespace_prefix_by_number)(
00234 axiom_xml_reader_t * parser,
00235 const axutil_env_t * env,
00236 int i);
00237
00245 axis2_char_t *(
00246 AXIS2_CALL
00247 * get_prefix)(
00248 axiom_xml_reader_t * parser,
00249 const axutil_env_t * env);
00250
00258 axis2_char_t *(
00259 AXIS2_CALL
00260 * get_name)(
00261 axiom_xml_reader_t * parser,
00262 const axutil_env_t * env);
00263
00271 axis2_char_t *(
00272 AXIS2_CALL
00273 * get_pi_target)(
00274 axiom_xml_reader_t * parser,
00275 const axutil_env_t * env);
00276
00284 axis2_char_t *(
00285 AXIS2_CALL
00286 * get_pi_data)(
00287 axiom_xml_reader_t * parser,
00288 const axutil_env_t * env);
00289
00297 axis2_char_t *(
00298 AXIS2_CALL
00299 * get_dtd)(
00300 axiom_xml_reader_t * parser,
00301 const axutil_env_t * env);
00302
00313 void(
00314 AXIS2_CALL
00315 * xml_free)(
00316 axiom_xml_reader_t * parser,
00317 const axutil_env_t * env,
00318 void *data);
00319
00327 axis2_char_t *(
00328 AXIS2_CALL
00329 * get_char_set_encoding)(
00330 axiom_xml_reader_t * parser,
00331 const axutil_env_t * env);
00332
00334 axis2_char_t *(
00335 AXIS2_CALL
00336 * get_namespace_uri)(
00337 axiom_xml_reader_t * parser,
00338 const axutil_env_t * env);
00339
00340 axis2_char_t *(
00341 AXIS2_CALL
00342 * get_namespace_uri_by_prefix)(
00343 axiom_xml_reader_t * parser,
00344 const axutil_env_t * env,
00345 axis2_char_t * prefix);
00346 };
00347
00352 struct axiom_xml_reader
00353 {
00354 const axiom_xml_reader_ops_t *ops;
00355 };
00356
00365 AXIS2_EXTERN axiom_xml_reader_t *AXIS2_CALL
00366
00367 axiom_xml_reader_create_for_file(
00368 const axutil_env_t * env,
00369 char *filename,
00370 const axis2_char_t * encoding);
00371
00387 AXIS2_EXTERN axiom_xml_reader_t *AXIS2_CALL
00388
00389 axiom_xml_reader_create_for_io(
00390 const axutil_env_t * env,
00391 AXIS2_READ_INPUT_CALLBACK,
00392 AXIS2_CLOSE_INPUT_CALLBACK,
00393 void *ctx,
00394 const axis2_char_t * encoding);
00395
00404 AXIS2_EXTERN axiom_xml_reader_t *AXIS2_CALL
00405
00406 axiom_xml_reader_create_for_memory(
00407 const axutil_env_t * env,
00408 void *container,
00409 int size,
00410 const axis2_char_t * encoding,
00411 int type);
00412
00416 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00417 axiom_xml_reader_init(
00418 );
00419
00423 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00424 axiom_xml_reader_cleanup(
00425 );
00426
00427 AXIS2_EXTERN int AXIS2_CALL
00428 axiom_xml_reader_next(
00429 axiom_xml_reader_t * parser,
00430 const axutil_env_t * env);
00431
00432 AXIS2_EXTERN void AXIS2_CALL
00433 axiom_xml_reader_free(
00434 axiom_xml_reader_t * parser,
00435 const axutil_env_t * env);
00436
00437 AXIS2_EXTERN int AXIS2_CALL
00438 axiom_xml_reader_get_attribute_count(
00439 axiom_xml_reader_t * parser,
00440 const axutil_env_t * env);
00441
00442 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00443
00444 axiom_xml_reader_get_attribute_name_by_number(
00445 axiom_xml_reader_t * parser,
00446 const axutil_env_t * env,
00447 int i);
00448
00449 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00450
00451 axiom_xml_reader_get_attribute_prefix_by_number(
00452 axiom_xml_reader_t * parser,
00453 const axutil_env_t * env,
00454 int i);
00455
00456 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00457
00458 axiom_xml_reader_get_attribute_value_by_number(
00459 axiom_xml_reader_t * parser,
00460 const axutil_env_t * env,
00461 int i);
00462
00463 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00464
00465 axiom_xml_reader_get_attribute_namespace_by_number(
00466 axiom_xml_reader_t * parser,
00467 const axutil_env_t * env,
00468 int i);
00469
00470 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00471 axiom_xml_reader_get_value(
00472 axiom_xml_reader_t * parser,
00473 const axutil_env_t * env);
00474
00475 AXIS2_EXTERN int AXIS2_CALL
00476 axiom_xml_reader_get_namespace_count(
00477 axiom_xml_reader_t * parser,
00478 const axutil_env_t * env);
00479
00480 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00481
00482 axiom_xml_reader_get_namespace_uri_by_number(
00483 axiom_xml_reader_t * parser,
00484 const axutil_env_t * env,
00485 int i);
00486
00487 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00488
00489 axiom_xml_reader_get_namespace_prefix_by_number(
00490 axiom_xml_reader_t * parser,
00491 const axutil_env_t * env,
00492 int i);
00493
00494 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00495 axiom_xml_reader_get_prefix(
00496 axiom_xml_reader_t * parser,
00497 const axutil_env_t * env);
00498
00499 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00500 axiom_xml_reader_get_name(
00501 axiom_xml_reader_t * parser,
00502 const axutil_env_t * env);
00503
00504 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00505 axiom_xml_reader_get_pi_target(
00506 axiom_xml_reader_t * parser,
00507 const axutil_env_t * env);
00508
00509 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00510 axiom_xml_reader_get_pi_data(
00511 axiom_xml_reader_t * parser,
00512 const axutil_env_t * env);
00513
00514 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00515 axiom_xml_reader_get_dtd(
00516 axiom_xml_reader_t * parser,
00517 const axutil_env_t * env);
00518
00519 AXIS2_EXTERN void AXIS2_CALL
00520 axiom_xml_reader_xml_free(
00521 axiom_xml_reader_t * parser,
00522 const axutil_env_t * env,
00523 void *data);
00524
00525 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00526
00527 axiom_xml_reader_get_char_set_encoding(
00528 axiom_xml_reader_t * parser,
00529 const axutil_env_t * env);
00530
00531 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00532 axiom_xml_reader_get_namespace_uri(
00533 axiom_xml_reader_t * parser,
00534 const axutil_env_t * env);
00535
00536 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00537
00538 axiom_xml_reader_get_namespace_uri_by_prefix(
00539 axiom_xml_reader_t * parser,
00540 const axutil_env_t * env,
00541 axis2_char_t * prefix);
00542
00545 #ifdef __cplusplus
00546 }
00547 #endif
00548
00549 #endif