1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
/*
***************************************************************************
*
* Author: Teunis van Beelen
*
* Copyright (C) 2007 - 2021 Teunis van Beelen
*
* Email: teuniz@protonmail.com
*
***************************************************************************
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
***************************************************************************
*/
#ifndef xml_INCLUDED
#define xml_INCLUDED
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "utils.h"
#define XML_STRBUFLEN (4096)
/* XML max element depth */
#define XML_MAX_ED (32)
#define XML_ERROR_GEN (-1)
#define XML_ERROR_STRLEN (-2)
#define XML_ERROR_MEMBUFSZ (-3)
#define XML_ERROR_INV_HDL (-4)
#define XML_ERROR_NOTFOUND (-5)
#define XML_ERROR_MALLOC (-6)
#ifdef __cplusplus
extern "C" {
#endif
struct xml_handle
{
FILE *file;
int encoding;
int level;
int offset[XML_MAX_ED];
int one_tag[XML_MAX_ED];
char *elementname[XML_MAX_ED];
int elementname_sz[XML_MAX_ED];
char *attributes[XML_MAX_ED];
int attributes_sz[XML_MAX_ED];
char *tag_search_result;
int tag_search_result_sz;
char *content[XML_MAX_ED];
int content_sz[XML_MAX_ED];
};
struct xml_handle * xml_get_handle(const char *);
void xml_close(struct xml_handle *);
void xml_go_up(struct xml_handle *);
int xml_goto_nth_element_inside(struct xml_handle *, const char *, int);
int xml_goto_next_element_with_same_name(struct xml_handle *);
int xml_goto_next_element_at_same_level(struct xml_handle *);
void xml_goto_root(struct xml_handle *);
int xml_get_content_of_element(struct xml_handle *, char *, int);
int xml_character_encoding_type(struct xml_handle *);
int xml_get_attribute_of_element(struct xml_handle *, const char *, char *, int);
int xml_get_name_of_element(struct xml_handle *, char *, int);
void xml_fwrite_encode_entity(FILE *, const char *);
void xml_fnwrite_encode_entity(FILE *, const char *, int);
void xml_strlcpy_encode_entity(char *, const char *, int);
int xml_strncpy_encode_entity(char *, const char *, int);
void xml_strlcpy_decode_entity(char *, const char *, int);
int xml_strncpy_decode_entity(char *, const char *, int);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif
|