Evolution API Reference: libedataserver, utility library | ||||
---|---|---|---|---|
enum EXmlHashType; GHashTable* e_xml_to_hash (xmlDoc *doc, EXmlHashType type); xmlDoc* e_xml_from_hash (GHashTable *hash, EXmlHashType type, const char *root_node); void e_xml_destroy_hash (GHashTable *hash); enum EXmlHashStatus; void (*EXmlHashFunc) (const char *key, const char *value, gpointer user_data); typedef EXmlHash; EXmlHash* e_xmlhash_new (const char *filename); void e_xmlhash_add (EXmlHash *hash, const char *key, const char *data); void e_xmlhash_remove (EXmlHash *hash, const char *key); EXmlHashStatus e_xmlhash_compare (EXmlHash *hash, const char *key, const char *compare_data); void e_xmlhash_foreach_key (EXmlHash *hash, EXmlHashFunc func, gpointer user_data); void e_xmlhash_write (EXmlHash *hash); void e_xmlhash_destroy (EXmlHash *hash);
typedef enum { E_XML_HASH_TYPE_OBJECT_UID, E_XML_HASH_TYPE_PROPERTY } EXmlHashType;
GHashTable* e_xml_to_hash (xmlDoc *doc, EXmlHashType type);
Creates a GHashTable representation of the xmlDoc doc
.
If type
is * E_XML_HASH_TYPE_PROPERTY
, all XML nodes will be
indexed in the GHashTable by name. If type
is
E_XML_HASH_TYPE_OBJECT_UID
, then XML objects will be indexed in
the hash by their UID (other nodes will still be indexed by name).
doc : |
The xmlDoc to store in a hash table. |
type : |
The value type to use as a key in the hash table. |
Returns : | The newly-created GHashTable representation of doc .
|
xmlDoc* e_xml_from_hash (GHashTable *hash, EXmlHashType type, const char *root_node);
Uses the key/value pair representation of an XML structure in hash
to build an equivalent xmlDoc. This is the reverse of
e_xml_to_hash()
.
hash : |
The GHashTable to extract the XML from. |
type : |
The EXmlHashType used to store the XML. |
root_node : |
|
Returns : | The xmlDoc created from the data in hash .
|
void e_xml_destroy_hash (GHashTable *hash);
Frees the memory used by hash
and its contents.
hash : |
The GHashTable to destroy. |
typedef enum { E_XMLHASH_STATUS_SAME, E_XMLHASH_STATUS_DIFFERENT, E_XMLHASH_STATUS_NOT_FOUND } EXmlHashStatus;
void (*EXmlHashFunc) (const char *key, const char *value, gpointer user_data);
key : |
|
value : |
|
user_data : |
EXmlHash* e_xmlhash_new (const char *filename);
Creates a new EXmlHash from the file filename
. If filename
does
not already exist, an empty EXmlHash will be created.
filename : |
The name of an XML file. |
Returns : | The new EXmlHash structure, or NULL if unable to parse
filename .
|
void e_xmlhash_add (EXmlHash *hash, const char *key, const char *data);
Adds a new key/value pair to the EXmlHash hash
.
hash : |
The EXmlHash to add an entry to. |
key : |
The key to use for the entry. |
data : |
The value of the new entry. |
void e_xmlhash_remove (EXmlHash *hash, const char *key);
Remove the entry in hash
with key equal to key
, if it exists.
hash : |
The EXmlHash to remove an entry from. |
key : |
The key of the entry to remove. |
EXmlHashStatus e_xmlhash_compare (EXmlHash *hash, const char *key, const char *compare_data);
Compares the value with key equal to key
in hash
against
compare_data
.
hash : |
The EXmlHash to compare against. |
key : |
The key of the hash entry to compare with. |
compare_data : |
The data to compare against the hash entry. |
Returns : | E_XMLHASH_STATUS_SAME if the value and compare_data are
equal,E_XMLHASH_STATUS_DIFFERENT if they are different, or
E_XMLHASH_STATUS_NOT_FOUND if there is no entry in hash with
its key equal to key .
|
void e_xmlhash_foreach_key (EXmlHash *hash, EXmlHashFunc func, gpointer user_data);
Executes func
against each key/value pair in hash
.
hash : |
An EXmlHash. |
func : |
The EXmlHashFunc to execute on the data in hash .
|
user_data : |
The data to pass to func .
|
void e_xmlhash_write (EXmlHash *hash);
Writes the XML represented by hash
to the file originally passed
to e_xmlhash_new()
.
hash : |
The EXmlHash to write. |