xmlnode.h File Reference
libpurple

XML DOM functions. More...

`#include <glib.h>`

Go to the source code of this file.

## Data Structures

struct | _xmlnode

## Typedefs

typedef enum _XMLNodeType | XMLNodeType
| The valid types for an xmlnode.
typedef struct _xmlnode | xmlnode
| An xmlnode.

## Enumerations

enum | _XMLNodeType { XMLNODE_TYPE_TAG, XMLNODE_TYPE_ATTRIB, XMLNODE_TYPE_DATA }
| The valid types for an xmlnode. More...

## Functions

xmlnode * | xmlnode_new (const char *name)
| Creates a new xmlnode. More...
xmlnode * | xmlnode_new_child (xmlnode *parent, const char *name)
| Creates a new xmlnode child. More...
void | xmlnode_insert_child (xmlnode *parent, xmlnode *child)
| Inserts a node into a node as a child. More...
xmlnode * | xmlnode_get_child (const xmlnode *parent, const char *name)
| Gets a child node named name. More...
xmlnode * | xmlnode_get_child_with_namespace (const xmlnode *parent, const char *name, const char *xmlns)
| Gets a child node named name in a namespace. More...
xmlnode * | xmlnode_get_next_twin (xmlnode *node)
| Gets the next node with the same name as node. More...
void | xmlnode_insert_data (xmlnode *node, const char *data, gssize size)
| Inserts data into a node. More...
char * | xmlnode_get_data (const xmlnode *node)
| Gets (escaped) data from a node. More...
char * | xmlnode_get_data_unescaped (const xmlnode *node)
| Gets unescaped data from a node. More...
void | xmlnode_set_attrib (xmlnode *node, const char *attr, const char *value)
| Sets an attribute for a node. More...
void | xmlnode_set_attrib_with_prefix (xmlnode *node, const char *attr, const char *prefix, const char *value)
| Sets a prefixed attribute for a node. More...
void | xmlnode_set_attrib_with_namespace (xmlnode *node, const char *attr, const char *xmlns, const char *value)
| Sets a namespaced attribute for a node. More...
void | xmlnode_set_attrib_full (xmlnode *node, const char *attr, const char *xmlns, const char *prefix, const char *value)
| Sets a namespaced attribute for a node. More...
const char * | xmlnode_get_attrib (const xmlnode *node, const char *attr)
| Gets an attribute from a node. More...
const char * | xmlnode_get_attrib_with_namespace (const xmlnode *node, const char *attr, const char *xmlns)
| Gets a namespaced attribute from a node. More...
void | xmlnode_remove_attrib (xmlnode *node, const char *attr)
| Removes an attribute from a node. More...
void | xmlnode_remove_attrib_with_namespace (xmlnode *node, const char *attr, const char *xmlns)
| Removes a namespaced attribute from a node. More...
void | xmlnode_set_namespace (xmlnode *node, const char *xmlns)
| Sets the namespace of a node. More...
const char * | xmlnode_get_namespace (xmlnode *node)
| Returns the namespace of a node. More...
void | xmlnode_set_prefix (xmlnode *node, const char *prefix)
| Sets the prefix of a node. More...
const char * | xmlnode_get_prefix (const xmlnode *node)
| Returns the prefix of a node. More...
xmlnode * | xmlnode_get_parent (const xmlnode *child)
| Gets the parent node. More...
char * | xmlnode_to_str (const xmlnode *node, int *len)
| Returns the node in a string of xml. More...
char * | xmlnode_to_formatted_str (const xmlnode *node, int *len)
| Returns the node in a string of human readable xml. More...
xmlnode * | xmlnode_from_str (const char *str, gssize size)
| Creates a node from a string of XML. More...
xmlnode * | xmlnode_copy (const xmlnode *src)
| Creates a new node from the source node. More...
void | xmlnode_free (xmlnode *node)
| Frees a node and all of its children. More...
xmlnode * | xmlnode_from_file (const char *dir, const char *filename, const char *description, const char *process)
| Creates a node from a XML File. More...

## Detailed Description

XML DOM functions.

Definition in file xmlnode.h.

## Enumeration Type Documentation

## _XMLNodeType

enum _XMLNodeType

The valid types for an xmlnode.

Enumerator
XMLNODE_TYPE_TAG | Just a tag.
XMLNODE_TYPE_ATTRIB | Has attributes.
XMLNODE_TYPE_DATA | Has data.

Definition at line 38 of file xmlnode.h.

## Function Documentation

## xmlnode_copy()

xmlnode* xmlnode_copy | ( | const xmlnode * | src | ) |

Creates a new node from the source node.

Parameters

  src | The node to copy.

Returns
  A new copy of the src node.

## xmlnode_free()

void xmlnode_free | ( | xmlnode * | node | ) |

Frees a node and all of its children.

Parameters

  node | The node to free.

## xmlnode_from_file()

xmlnode* xmlnode_from_file | ( | const char * | dir,
|  | const char * | filename,
|  | const char * | description,
|  | const char * | process
| ) |  |

Creates a node from a XML File.

Calling this on the root node of an XML document will parse the entire document into a tree of nodes, and return the xmlnode of the root.

Parameters

  dir | The directory where the file is located
  filename | The filename
  description | A description of the file being parsed. Displayed to the user if the file cannot be read.
  process | The subsystem that is calling xmlnode_from_file. Used as the category for debugging.

Returns
  The new node or NULL if an error occurred.

Since
  2.6.0

## xmlnode_from_str()

xmlnode* xmlnode_from_str | ( | const char * | str,
|  | gssize | size
| ) |  |

Creates a node from a string of XML.

Calling this on the root node of an XML document will parse the entire document into a tree of nodes, and return the xmlnode of the root.

Parameters

  str | The string of xml.
  size | The size of the string, or -1 if str is NUL-terminated.

Returns
  The new node.

## xmlnode_get_attrib()

const char* xmlnode_get_attrib | ( | const xmlnode * | node,
|  | const char * | attr
| ) |  |

Gets an attribute from a node.

Parameters

  node | The node to get an attribute from.
  attr | The attribute to get.

Returns
  The value of the attribute.

## xmlnode_get_attrib_with_namespace()

const char* xmlnode_get_attrib_with_namespace | ( | const xmlnode * | node,
|  | const char * | attr,
|  | const char * | xmlns
| ) |  |

Gets a namespaced attribute from a node.

Parameters

  node | The node to get an attribute from.
  attr | The attribute to get
  xmlns | The namespace of the attribute to get

Returns
  The value of the attribute/

## xmlnode_get_child()

xmlnode* xmlnode_get_child | ( | const xmlnode * | parent,
|  | const char * | name
| ) |  |

Gets a child node named name.

Parameters

  parent | The parent node.
  name | The child's name.

Returns
  The child or NULL.

## xmlnode_get_child_with_namespace()

xmlnode* xmlnode_get_child_with_namespace | ( | const xmlnode * | parent,
|  | const char * | name,
|  | const char * | xmlns
| ) |  |

Gets a child node named name in a namespace.

Parameters

  parent | The parent node.
  name | The child's name.
  xmlns | The namespace.

Returns
  The child or NULL.

## xmlnode_get_data()

char* xmlnode_get_data | ( | const xmlnode * | node | ) |

Gets (escaped) data from a node.

Parameters

  node | The node to get data from.

Returns
  The data from the node or NULL. This data is in raw escaped format. You must g_free this string when finished using it.

## xmlnode_get_data_unescaped()

char* xmlnode_get_data_unescaped | ( | const xmlnode * | node | ) |

Gets unescaped data from a node.

Parameters

  node | The node to get data from.

Returns
  The data from the node, in unescaped form. You must g_free this string when finished using it.

## xmlnode_get_namespace()

const char* xmlnode_get_namespace | ( | xmlnode * | node | ) |

Returns the namespace of a node.

Parameters

  node | The node to get the namepsace from

Returns
  The namespace of this node

## xmlnode_get_next_twin()

xmlnode* xmlnode_get_next_twin | ( | xmlnode * | node | ) |

Gets the next node with the same name as node.

Parameters

  node | The node of a twin to find.

Returns
  The twin of node or NULL.

## xmlnode_get_parent()

xmlnode* xmlnode_get_parent | ( | const xmlnode * | child | ) |

Gets the parent node.

Parameters

  child | The child node.

Returns
  The parent or NULL.

Since
  2.6.0

## xmlnode_get_prefix()

const char* xmlnode_get_prefix | ( | const xmlnode * | node | ) |

Returns the prefix of a node.

Parameters

  node | The node to get the prefix from

Returns
  The prefix of this node

## xmlnode_insert_child()

void xmlnode_insert_child | ( | xmlnode * | parent,
|  | xmlnode * | child
| ) |  |

Inserts a node into a node as a child.

Parameters

  parent | The parent node to insert child into.
  child | The child node to insert into parent.

## xmlnode_insert_data()

void xmlnode_insert_data | ( | xmlnode * | node,
|  | const char * | data,
|  | gssize | size
| ) |  |

Inserts data into a node.

Parameters

  node | The node to insert data into.
  data | The data to insert.
  size | The size of the data to insert. If data is null-terminated you can pass in -1.

## xmlnode_new()

xmlnode* xmlnode_new | ( | const char * | name | ) |

Creates a new xmlnode.

Parameters

  name | The name of the node.

Returns
  The new node.

## xmlnode_new_child()

xmlnode* xmlnode_new_child | ( | xmlnode * | parent,
|  | const char * | name
| ) |  |

Creates a new xmlnode child.

Parameters

  parent | The parent node.
  name | The name of the child node.

Returns
  The new child node.

## xmlnode_remove_attrib()

void xmlnode_remove_attrib | ( | xmlnode * | node,
|  | const char * | attr
| ) |  |

Removes an attribute from a node.

Parameters

  node | The node to remove an attribute from.
  attr | The attribute to remove.

## xmlnode_remove_attrib_with_namespace()

void xmlnode_remove_attrib_with_namespace | ( | xmlnode * | node,
|  | const char * | attr,
|  | const char * | xmlns
| ) |  |

Removes a namespaced attribute from a node.

Parameters

  node | The node to remove an attribute from
  attr | The attribute to remove
  xmlns | The namespace of the attribute to remove

## xmlnode_set_attrib()

void xmlnode_set_attrib | ( | xmlnode * | node,
|  | const char * | attr,
|  | const char * | value
| ) |  |

Sets an attribute for a node.

Parameters

  node | The node to set an attribute for.
  attr | The name of the attribute.
  value | The value of the attribute.

## xmlnode_set_attrib_full()

void xmlnode_set_attrib_full | ( | xmlnode * | node,
|  | const char * | attr,
|  | const char * | xmlns,
|  | const char * | prefix,
|  | const char * | value
| ) |  |

Sets a namespaced attribute for a node.

Parameters

  node | The node to set an attribute for.
  attr | The name of the attribute to set
  xmlns | The namespace of the attribute to ste
  prefix | The prefix of the attribute to ste
  value | The value of the attribute

Since
  2.6.0

## xmlnode_set_attrib_with_namespace()

void xmlnode_set_attrib_with_namespace | ( | xmlnode * | node,
|  | const char * | attr,
|  | const char * | xmlns,
|  | const char * | value
| ) |  |

Sets a namespaced attribute for a node.

Parameters

  node | The node to set an attribute for.
  attr | The name of the attribute to set
  xmlns | The namespace of the attribute to ste
  value | The value of the attribute

Deprecated:
  Use xmlnode_set_attrib_full instead.

## xmlnode_set_attrib_with_prefix()

void xmlnode_set_attrib_with_prefix | ( | xmlnode * | node,
|  | const char * | attr,
|  | const char * | prefix,
|  | const char * | value
| ) |  |

Sets a prefixed attribute for a node.

Parameters

  node | The node to set an attribute for.
  attr | The name of the attribute to set
  prefix | The prefix of the attribute to ste
  value | The value of the attribute

Deprecated:
  Use xmlnode_set_attrib_full instead.

## xmlnode_set_namespace()

void xmlnode_set_namespace | ( | xmlnode * | node,
|  | const char * | xmlns
| ) |  |

Sets the namespace of a node.

Parameters

  node | The node to qualify
  xmlns | The namespace of the node

## xmlnode_set_prefix()

void xmlnode_set_prefix | ( | xmlnode * | node,
|  | const char * | prefix
| ) |  |

Sets the prefix of a node.

Parameters

  node | The node to qualify
  prefix | The prefix of the node

## xmlnode_to_formatted_str()

char* xmlnode_to_formatted_str | ( | const xmlnode * | node,
|  | int * | len
| ) |  |

Returns the node in a string of human readable xml.

Parameters

  node | The starting node to output.
  len | Address for the size of the string.

Returns
  The node as human readable string including tab and new line characters. You must g_free this string when finished using it.

## xmlnode_to_str()

char* xmlnode_to_str | ( | const xmlnode * | node,
|  | int * | len
| ) |  |

Returns the node in a string of xml.

Parameters

  node | The starting node to output.
  len | Address for the size of the string.

Returns
  The node represented as a string. You must g_free this string when finished using it.