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