xmlnode.h

Go to the documentation of this file.
00001 
00025 #ifndef _PURPLE_XMLNODE_H_
00026 #define _PURPLE_XMLNODE_H_
00027 
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031 
00035 typedef enum _XMLNodeType
00036 {
00037     XMLNODE_TYPE_TAG,       
00038     XMLNODE_TYPE_ATTRIB,        
00039     XMLNODE_TYPE_DATA       
00040 } XMLNodeType;
00041 
00045 typedef struct _xmlnode xmlnode;
00046 struct _xmlnode
00047 {
00048     char *name;         
00049     char *xmlns;        
00050     XMLNodeType type;       
00051     char *data;         
00052     size_t data_sz;         
00053     struct _xmlnode *parent;    
00054     struct _xmlnode *child;     
00055     struct _xmlnode *lastchild; 
00056     struct _xmlnode *next;      
00057 };
00058 
00066 xmlnode *xmlnode_new(const char *name);
00067 
00076 xmlnode *xmlnode_new_child(xmlnode *parent, const char *name);
00077 
00084 void xmlnode_insert_child(xmlnode *parent, xmlnode *child);
00085 
00094 xmlnode *xmlnode_get_child(const xmlnode *parent, const char *name);
00095 
00105 xmlnode *xmlnode_get_child_with_namespace(const xmlnode *parent, const char *name, const char *xmlns);
00106 
00114 xmlnode *xmlnode_get_next_twin(xmlnode *node);
00115 
00124 void xmlnode_insert_data(xmlnode *node, const char *data, gssize size);
00125 
00134 char *xmlnode_get_data(xmlnode *node);
00135 
00144 char *xmlnode_get_data_unescaped(xmlnode *node);
00145 
00153 void xmlnode_set_attrib(xmlnode *node, const char *attr, const char *value);
00154 
00163 void xmlnode_set_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns, const char *value);
00164 
00173 const char *xmlnode_get_attrib(xmlnode *node, const char *attr);
00174 
00184 const char *xmlnode_get_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns);
00185 
00192 void xmlnode_remove_attrib(xmlnode *node, const char *attr);
00193 
00201 void xmlnode_remove_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns);
00202 
00209 void xmlnode_set_namespace(xmlnode *node, const char *xmlns);
00210 
00217 const char *xmlnode_get_namespace(xmlnode *node);
00218 
00228 char *xmlnode_to_str(xmlnode *node, int *len);
00229 
00240 char *xmlnode_to_formatted_str(xmlnode *node, int *len);
00241 
00253 xmlnode *xmlnode_from_str(const char *str, gssize size);
00254 
00262 xmlnode *xmlnode_copy(const xmlnode *src);
00263 
00269 void xmlnode_free(xmlnode *node);
00270 
00271 #ifdef __cplusplus
00272 }
00273 #endif
00274 
00275 #endif /* _PURPLE_XMLNODE_H_ */