00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef LXML_H
00021 #define LXML_H
00022
00023
00024 #include <sys/stat.h>
00025
00026
00027 #include "cntree.h"
00028 #include "clist.h"
00029
00030 typedef struct LXMLhandle_s LXMLhandle;
00031
00032 typedef struct LXMLelement_s LXMLelement;
00033
00034 typedef struct LXMLstore_s LXMLstore;
00035
00036 typedef struct LXMLelement_callbacks_s LXMLelement_callbacks;
00037
00058 struct LXMLstore_s
00059 {
00060 char *attr;
00061 int value_type;
00063 void **dest;
00065 int dest_kind;
00067 };
00068
00089 struct LXMLelement_callbacks_s
00090 {
00091 char *element_name;
00092 int (*callback)(cntree *atree, void **data, void **data_iter, int op);
00093 void **data;
00094 };
00095
00096 enum
00097 {
00098 LXML_String = 1,
00099 LXML_Int,
00100 LXML_Boolean
00101 };
00102
00103 enum
00104 {
00105 LXML_Unique = 1,
00106 LXML_List
00109 };
00110
00111 enum
00112 {
00113 LXML_None,
00114 LXML_Read,
00116 LXML_Write
00118 };
00119
00120
00121
00125 LXMLhandle *
00126 lxml_new(void);
00127
00132 void
00133 lxml_free(LXMLhandle *handle);
00134
00140 int
00141 lxml_set_filename(LXMLhandle *handle, const char *filename);
00142
00151 int
00152 lxml_set_encoding(LXMLhandle *handle, const char *encoding);
00153
00162 const char *
00163 lxml_get_encoding(LXMLhandle *handle);
00164
00172 int
00173 lxml_set_dtd(LXMLhandle *handle, const char *dtd);
00174
00183 const char *
00184 lxml_get_dtd(LXMLhandle *handle);
00185
00193 int
00194 lxml_file_open(LXMLhandle *handle, int mode);
00195
00201 int
00202 lxml_file_close(LXMLhandle *handle);
00203
00218 cntree *
00219 lxml_file_read(LXMLhandle *handle);
00220
00233 int
00234 lxml_file_write(LXMLhandle *handle, cntree *ntree);
00235
00236
00237
00242 cntree *
00243 lxml_tree_new(void);
00244
00250 void
00251 lxml_tree_free(cntree *ntree);
00252
00258 void
00259 lxml_tree_free_structural_data(cntree *ntree);
00260
00266 LXMLelement *
00267 lxml_tree_get_element(cntree *ntree);
00268
00269
00270
00285 int
00286 lxml_tree_for_each_element_in_path(cntree *ntree, char **path,
00287 int (*callback)(cntree *atree,
00288 void *adata,
00289 int aop),
00290 void *data,
00291 int op);
00292
00335 int
00336 lxml_tree_convert(cntree *ntree, LXMLelement_callbacks *element_cb, int op);
00337
00338
00339
00349 int
00350 lxml_element_name(LXMLelement *element, char *name, int op);
00351
00387 int
00388 lxml_element_store_attr(LXMLelement *element, LXMLstore *store, int op);
00389
00394 int
00395 lxml_element_attr_count(LXMLelement *element);
00396
00397 #endif
00398
00399
00400