00001 #ifndef _OPENSYNC_XML_H
00002 #define _OPENSYNC_XML_H
00003
00004 #include <libxml/xmlmemory.h>
00005 #include <libxml/parser.h>
00006 #include <libxml/xpath.h>
00007
00008 #ifdef __cplusplus
00009 extern "C"
00010 {
00011 #endif
00012
00013 typedef enum osxmlEncoding {
00014 OSXML_8BIT = 0,
00015 OSXML_QUOTED_PRINTABLE = 1,
00016 OSXML_BASE64 = 2
00017 } osxmlEncoding;
00018
00019 typedef enum osxmlCharset {
00020 OSXML_ASCII = 0,
00021 OSXML_UTF8 = 1
00022 } osxmlCharset;
00023
00024 typedef struct OSyncXMLEncoding OSyncXMLEncoding;
00025 struct OSyncXMLEncoding {
00026 osxmlEncoding encoding;
00027 osxmlCharset charset;
00028 };
00029
00030 xmlNode *osxml_node_add_root(xmlDoc *doc, const char *name);
00031 xmlNode *osxml_node_get_root(xmlDoc *doc, const char *name, OSyncError **error);
00032 xmlNode *osxml_get_node(xmlNode *parent, const char *name);
00033
00034 xmlNode *osxml_node_add(xmlNode *parent, const char *name, const char *data);
00035
00036 xmlNode *osxml_format_parse(const char *input, int size, const char *rootname, OSyncError **error);
00037 char *osxml_find_node(xmlNode *parent, const char *name);
00038 void osxml_node_add_property(xmlNode *parent, const char *name, const char *data);
00039 char *osxml_find_property(xmlNode *parent, const char *name);
00040 osync_bool osxml_has_property(xmlNode *parent, const char *name);
00041 osync_bool osxml_has_property_full(xmlNode *parent, const char *name, const char *data);
00042
00043 void osxml_node_mark_unknown(xmlNode *parent);
00044 void osxml_node_remove_unknown_mark(xmlNode *node);
00045 void osxml_map_unknown_param(xmlNode *node, const char *paramname, const char *newname);
00046
00047 void osxml_node_set(xmlNode *node, const char *name, const char *data, OSyncXMLEncoding encoding);
00048 xmlXPathObject *osxml_get_nodeset(xmlDoc *doc, const char *expression);
00049 xmlXPathObject *osxml_get_unknown_nodes(xmlDoc *doc);
00050 xmlChar *osxml_write_to_string(xmlDoc *doc);
00051 osync_bool osxml_copy(const char *input, int inpsize, char **output, int *outpsize);
00052
00053 osync_bool osxml_marshall(const char *input, int inpsize, char **output, int *outpsize, OSyncError **error);
00054 osync_bool osxml_demarshall(const char *input, int inpsize, char **output, int *outpsize, OSyncError **error);
00055
00056 #ifdef __cplusplus
00057 }
00058 #endif
00059
00060 #endif // _OPENSYNC_XML_H