## RestXmlParser RestXmlParser |

## Functions

RestXmlParser * | rest_xml_parser_new ()
RestXmlNode * | rest_xml_parser_parse_from_data ()
RestXmlNode * | rest_xml_node_ref ()
void | rest_xml_node_unref ()
const gchar * | rest_xml_node_get_attr ()
RestXmlNode * | rest_xml_node_find ()

## Types and Values

| RestXmlParser
struct | RestXmlNode

## Object Hierarchy

        GBoxed
        ╰── RestXmlNode
        GObject
        ╰── RestXmlParser

## Description

## Functions

### rest_xml_parser_new ()

    RestXmlParser *
    rest_xml_parser_new (void);

Create a new RestXmlParser, for parsing XML documents.

#### Returns

a new RestXmlParser.

### rest_xml_parser_parse_from_data ()

    RestXmlNode *
    rest_xml_parser_parse_from_data (RestXmlParser *parser,
                                     const gchar *data,
                                     goffset len);

Parse the XML in `data` , and return a new RestXmlNode. If `data` is invalid XML, `NULL` is returned.

#### Parameters

parser | a RestXmlParser |
data | the XML content to parse |
len | the length of `data` , or -1 if `data` is a nul-terminated string |

#### Returns

a new RestXmlNode, or `NULL` if the XML was invalid.

### rest_xml_node_ref ()

    RestXmlNode *
    rest_xml_node_ref (RestXmlNode *node);

Increases the reference count of `node` .

[skip]

#### Parameters

node | a RestXmlNode |

#### Returns

the same `node` .

### rest_xml_node_unref ()

    void
    rest_xml_node_unref (RestXmlNode *node);

Decreases the reference count of `node` . When its reference count drops to 0, the node is finalized (i.e. its memory is freed).

[skip]

#### Parameters

node | a RestXmlNode |

### rest_xml_node_get_attr ()

    const gchar *
    rest_xml_node_get_attr (RestXmlNode *node,
                            const gchar *attr_name);

Get the value of the attribute named `attr_name` , or `NULL` if it doesn't exist.

#### Parameters

node | a RestXmlNode |
attr_name | the name of an attribute |

#### Returns

the attribute value. This string is owned by RestXmlNode and should not be freed.

### rest_xml_node_find ()

    RestXmlNode *
    rest_xml_node_find (RestXmlNode *start,
                        const gchar *tag);

Searches for the first child node of `start` named `tag` .

#### Parameters

start | a RestXmlNode |
tag | the name of a node |

#### Returns

the first child node, or `NULL` if it doesn't exist.

## Types and Values

### RestXmlParser

    typedef struct _RestXmlParser RestXmlParser;

### struct RestXmlNode

    struct RestXmlNode {
      gchar *name;
      gchar *content;
      GHashTable *children;
      GHashTable *attrs;
      RestXmlNode *next;
    };

#### Members

gchar *`name`; | the name of the element |
gchar *`content`; | the textual content of the element |
GHashTable *`children`; | a GHashTable of string name to RestXmlNode for the children of the element. |
GHashTable *`attrs`; | a GHashTable of string name to string values for the attributes of the element. |
RestXmlNode *`next`; | the sibling RestXmlNode with the same name |