00001 #ifndef CAJUN_XML_UTILS_H 00002 #define CAJUN_XML_UTILS_H 00003 00004 #include <libxml/parser.h> 00005 #include <libxml/tree.h> 00006 00007 namespace cajun 00008 { 00012 typedef xmlDocPtr xml_doc_t; 00016 typedef xmlNodePtr xml_node_t; 00020 typedef xmlAttrPtr xml_node_attr_t; 00021 00022 bool xml_doc_is_valid (xml_doc_t doc); 00023 bool xml_node_is_valid (xml_node_t node); 00024 bool xml_node_attr_is_valid (xml_node_attr_t node_attr); 00025 xml_doc_t xml_new_doc (); 00026 xml_doc_t xml_parse_doc (const char *filename); 00027 bool xml_save_doc (xml_doc_t doc, const char *filename); 00028 xml_node_t xml_new_node (const char *name); 00029 void xml_remove_node (xml_node_t curr_node); 00030 void xml_remove_and_free_node (xml_node_t curr_node); 00031 void xml_remove_node_by_name (xml_node_t start_node, const char *name); 00032 void xml_remove_and_free_node_name (xml_node_t start_node, const char *name); 00033 xml_node_t xml_get_root_node (xml_doc_t doc); 00034 xml_node_t xml_set_root_node (xml_doc_t doc, xml_node_t root); 00035 bool xml_is_doc_type (xml_node_t root_node, const char *type); 00036 xml_node_t xml_get_node_by_name (xml_node_t start_node, const char *name); 00037 const char* xml_node_get_contents_from_name (xml_node_t start_node, 00038 const char *name); 00039 void xml_node_set_contents_from_name (xml_node_t start_node, 00040 const char *name, 00041 const char *val); 00042 const char* xml_node_get_contents (xml_node_t curr_node); 00043 void xml_node_set_contents (xml_node_t curr_node, const char *val); 00044 bool xml_node_has_child (xml_node_t curr_node); 00045 xml_node_t xml_node_get_child (xml_node_t curr_node); 00046 bool xml_node_has_next (xml_node_t curr_node); 00047 xml_node_t xml_node_get_next (xml_node_t curr_node); 00048 bool xml_node_matches (xml_node_t curr_node, const char *name); 00049 const char* xml_node_name (xml_node_t curr_node); 00050 xml_node_t xml_node_add_child (xml_node_t curr_node, const char *name); 00051 xml_node_t xml_node_add_child (xml_node_t curr_node, const char *name, 00052 const char *content); 00053 xml_node_attr_t xml_node_add_prop (xml_node_t curr_node, const char *prop_name, 00054 const char *prop_val); 00055 const char* xml_node_get_prop (xml_node_t curr_node, const char *prop_name); 00056 const char* xml_node_get_prop_from_name (xml_node_t start_node, 00057 const char *node_name, 00058 const char *prop_name); 00059 xml_node_attr_t xml_node_set_prop (xml_node_t curr_node, const char *prop_name, 00060 const char *prop_val); 00061 bool xml_node_has_prop (xml_node_t curr_node, const char *prop_name); 00062 }; 00063 00064 00065 #endif