00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _OPENSYNC_XML_H
00022 #define _OPENSYNC_XML_H
00023
00024 #include <libxml/xmlmemory.h>
00025 #include <libxml/parser.h>
00026 #include <libxml/xpath.h>
00027 #include <libxml/xmlschemas.h>
00028
00029 #include <opensync/opensync.h>
00030 #include <string.h>
00031 #include <stdio.h>
00032
00033 typedef enum osxmlEncoding {
00034 OSXML_8BIT = 0,
00035 OSXML_QUOTED_PRINTABLE = 1,
00036 OSXML_BASE64 = 2
00037 } osxmlEncoding;
00038
00039 typedef enum osxmlCharset {
00040 OSXML_ASCII = 0,
00041 OSXML_UTF8 = 1
00042 } osxmlCharset;
00043
00044 typedef struct OSyncXMLEncoding OSyncXMLEncoding;
00045 struct OSyncXMLEncoding {
00046 osxmlEncoding encoding;
00047 osxmlCharset charset;
00048 };
00049
00050 typedef struct OSyncXMLScore {
00051 int value;
00052 const char *path;
00053 } OSyncXMLScore;
00054
00055 void osync_xml_free(void *ptr);
00056 void osync_xml_free_doc(xmlDoc *doc);
00057
00058 xmlNode *osync_xml_node_add_root(xmlDoc *doc, const char *name);
00059 xmlNode *osync_xml_node_get_root(xmlDoc *doc, const char *name, OSyncError **error);
00060 xmlNode *osync_xml_get_node(xmlNode *parent, const char *name);
00061
00062 xmlNode *osync_xml_node_add(xmlNode *parent, const char *name, const char *data);
00063 xmlNode *osync_xml_format_parse(const char *input, int size, const char *rootname, OSyncError **error);
00064 xmlChar *osync_xml_find_node(xmlNode *parent, const char *name);
00065 void osync_xml_node_add_property(xmlNode *parent, const char *name, const char *data);
00066 char *osync_xml_find_property(xmlNode *parent, const char *name);
00067 osync_bool osync_xml_has_property(xmlNode *parent, const char *name);
00068 osync_bool osync_xml_has_property_full(xmlNode *parent, const char *name, const char *data);
00069
00070 void osync_xml_node_mark_unknown(xmlNode *parent);
00071 void osync_xml_node_remove_unknown_mark(xmlNode *node);
00072 void osync_xml_map_unknown_param(xmlNode *node, const char *paramname, const char *newname);
00073
00074 void osync_xml_node_set(xmlNode *node, const char *name, const char *data, OSyncXMLEncoding encoding);
00075 xmlXPathObject *osync_xml_get_nodeset(xmlDoc *doc, const char *expression);
00076 xmlXPathObject *osync_xml_get_unknown_nodes(xmlDoc *doc);
00077 OSyncConvCmpResult osync_xml_compare(xmlDoc *leftinpdoc, xmlDoc *rightinpdoc, OSyncXMLScore *scores, int default_score, int treshold);
00078 char *osync_xml_write_to_string(xmlDoc *doc);
00079 osync_bool osync_xml_copy(const char *input, unsigned int inpsize, char **output, unsigned int *outpsize, OSyncError **error);
00080
00081 osync_bool osync_xml_marshal(const char *input, unsigned int inpsize, OSyncMessage *message, OSyncError **error);
00082 osync_bool osync_xml_demarshal(OSyncMessage *message, char **output, unsigned int *outpsize, OSyncError **error);
00083
00084 osync_bool osync_xml_validate_document(xmlDocPtr doc, char *schemafilepath);
00085
00086 xmlChar *osync_xml_node_get_content(xmlNodePtr node);
00087 xmlChar *osync_xml_attr_get_content(xmlAttrPtr node);
00088
00089 osync_bool osync_xml_open_file(xmlDocPtr *doc, xmlNodePtr *cur, const char *path, const char *topentry, OSyncError **error);
00090
00091 #endif