00001
00024 #ifndef _GAIM_XMLNODE_H_
00025 #define _GAIM_XMLNODE_H_
00026
00027 typedef enum _XMLNodeType
00028 {
00029 XMLNODE_TYPE_TAG,
00030 XMLNODE_TYPE_ATTRIB,
00031 XMLNODE_TYPE_DATA
00032 } XMLNodeType;
00033
00034 typedef struct _xmlnode
00035 {
00036 char *name;
00037 XMLNodeType type;
00038 char *data;
00039 size_t data_sz;
00040 struct _xmlnode *parent;
00041 struct _xmlnode *child;
00042 struct _xmlnode *next;
00043 } xmlnode;
00044
00045 xmlnode *xmlnode_new(const char *name);
00046 xmlnode *xmlnode_new_child(xmlnode *parent, const char *name);
00047 void xmlnode_insert_child(xmlnode *parent, xmlnode *child);
00048 xmlnode *xmlnode_get_child(xmlnode *parent, const char *name);
00049 xmlnode *xmlnode_get_child_with_namespace(xmlnode *parent, const char *name, const char *xmlns);
00050 xmlnode *xmlnode_get_next_twin(xmlnode *node);
00051 void xmlnode_insert_data(xmlnode *parent, const char *data, size_t size);
00052 char *xmlnode_get_data(xmlnode *node);
00053 void xmlnode_set_attrib(xmlnode *node, const char *attr, const char *value);
00054 const char *xmlnode_get_attrib(xmlnode *node, const char *attr);
00055 void xmlnode_remove_attrib(xmlnode *node, const char *attr);
00056 char *xmlnode_to_str(xmlnode *node, int *len);
00057 char *xmlnode_to_formatted_str(xmlnode *node, int *len);
00058 xmlnode *xmlnode_from_str(const char *str, size_t size);
00059 xmlnode *xmlnode_copy(xmlnode *src);
00060
00061 void xmlnode_free(xmlnode *node);
00062
00063 #endif